Базовый курс. МГ сессия от 16.02.2011
Рассмотрим порцию свежих вопросов участников базового курса по программированию.
1. Оперативное проведение документов.
После просмотра урока «Особенности оперативного проведения» 1-ой главы 2-го блока (файл Block2-305-part0-add.exe) не все, я думаю, могут осознать последствия повторного проведения документа.
Пример:
Создали приходную накладную
Создали расходную накладную
Перепровели приходную накладную.
Т.е. получится следующее: приходная накладная перепроведется с текущим временем и окажется позже расходной накладной, что будет неправильно.
Ведь остатки уйдут в минус. И только через отчеты можно будет увидеть эти минусы. Сама программа никак об этом не просигнализирует.
2. Конкатенация в запросе.
Во встроенном языке можно делать операцию конкатенации к строке прибавляя строку или же другой тип.
В тексте запроса не удается сделать конкатенацию, если прибавляемое значение не есть строка.
3. Нумерация документов.
Разбираюсь с многофирменным учетом и установкой префиксов у документов.
Сделал простейшую конфигурацию – Справочник Организации со строковым реквизитом Префикс, и один документ с Реквизитом Организация.
Префикс номера документа должен браться из Организации.
При изменении Организации, префикс у документа тоже должен изменяться.
Проблемы:
номер все время увеличивается, и получаются пропуски номеров. Не понятно, куда пропадают номера…
Например, я удаляю ВСЕ созданные документы. Так вот ИНОГДА (не всегда!) почему-то номера вновь вводимых документов начинаются не с <Префикс>00000001, а с того номера, который был перед удалением плюс один.
4. Просмотр данных по одной группе.
Есть справочник иерархия элементов!
Каким образом можно посмотреть для одной из номенклатур все элементы которые входят в него?
Для того чтобы посмотреть куда он входит есть Родитель, А вот что-то типа «подчинение» нет!
По п.3.
А как тогда связан указанный в уроке метод глобального контекста ОбновитьНумерациюОбъектов() со свойством конфигурации “Режим автонумерации объектов”, который может принимать значения:
Не освобождать автоматически
Освобождать автоматически
?
Можно сказать, что это разные механизмы.
При выборе значения “Освобождать автоматически” система будет присваивать номер при открытии документа и если он не записан, то будет номер “освобождать”.
При выборе “Не освобождать автоматически” будет происходить присваивание номера при записи документа.
По п.2
Попытался “шаманскими” способами заставить платформу все же выполнить конкатенацию в запросе и наткнулся на следующее.
Встроенная функция запроса ПРЕДСТАВЛЕНИЕ вообще-то возвращает строковый тип данных. Чтобы проверить это, достаточно выполнить вот такой запрос:
ВЫБРАТЬ
ТИПЗНАЧЕНИЯ(ПРЕДСТАВЛЕНИЕ(111)) КАК Поле1
ВЫБРАТЬ ТИПЗНАЧЕНИЯ(ПРЕДСТАВЛЕНИЕ(111)) КАК Поле1
Возвратится значение “Строка”!
Однако последующие попытки сделать что-то с этой строкой не приносят успеха – система в любом случае диагностирует несовместимость типов. В чем здесь дело?
Полагаю это ограничение языка запросов.
По п.1.
А разве при оперативном перепроведении приходного документа последовательность решит проблему? На какой позиции тогда станет граница последовательности, если перепровести приходный документ?
Последовательность решит проблему.
Пример границы последовательности:
28.02.2011 9:13:10; Поступление товаров DN0000024 от 28.02.2011 9:14:12.
То есть остается момент времени “старого” значения документа, хотя сам документ имеет уже другое время.
Можно я еще один вопрос спрошу?
У класса “Регистра накопления менеджер” есть метод СоздатьКлючЗаписи(). Ключ записи – это Регистратор и НомерСтроки. В параметрах этого метода в структуре задаются значения ключа, НО в приведенном в синтаксис-помощнике примере в качестве значений ключа задаются, видимо, значения измерений…
Пример из Синтаксис-Помощика:
Отбор = Новый Структура;
Отбор.Вставить(“Номенклатура”, ВыбНоменклатура);
Отбор.Вставить(“Склад”, ВыбСклад);
Рег = РегистрыНакопления.ТоварыНаСкладах;
КлючЗаписи = Рег.СоздатьКлючЗаписи(Отбор);
Хотя в моем понимании пример должен выглядеть так:
Отбор = Новый Структура;
Отбор.Вставить(“Регистратор”, ВыбДокумент);
Отбор.Вставить(“НомерСтроки”, ВыбНомерСтроки);
Рег = РегистрыНакопления.ТоварыНаСкладах;
КлючЗаписи = Рег.СоздатьКлючЗаписи(Отбор);
Или я чего-то недопонял…
Это ошибка синтакс-помощника.
К сожалению, не единственная.
Спасибо!
Евгений, спасибо за такое подробное рассмотрение!