Решил проверить свои знания по встроенному языку 1С 7.7 в отраслевой конфигурации "Агент-плюс" на базе ТиС 9.2(Торговля+склад) и доработал для себя типовой отчет "Ведомость по остаткам ТМЦ" чтоб не забывать типовые механизмы хранения и специфику и заодно для определеного круга задач по контролю переноса данных сделать отчет-шаблончик. В основном для контроля работы обработок 1С 7.7 по переносе данных в УТ 10.3 и УТ 11.1 - или прочие конфигурации на базе платформы 1С 8.Х) через XML (тоже полезные наработки - планирую выложить).
На форму отчета по остаткам ТМЦ (фактически прайс-лист при формировании по цене продажи на текущие сутки) добавлены два реквизита на форму (сохраняются в настройках пользователя при указании см рисунок 1):
Рисунок 1. Внешний вид доработанного отчета "Ведомость по остаткам ТМЦ".
- "Тип цены" (закупочная, мелкооптовая, оптовая, цена продажи...);
- "Валюта";
- "флаг отладки" для контроля истории изменения цен (в 1С 7.7 очень нехороший отладчик по сравнению с 8.х).
Работа с конструктором формы и обработчикам для удобства пользователей показана ниже на рисунке 2, где самый простой вариант копировать готовые реквизиты и кнопки и изменять их свойства: тип, идентификатор, заголовок, сохранение, быстрый отбор...
Рисунок 2. Изменение свойств новых реквизитов
Далее, добавим в исходный макет формы отчета колонку "цена" и оформив новый параметр секций "ПечЦена" как показано на рисунках 3 и 4:
Рисунок 3. Макет отчета с колонкой "Цена" (промежуточный вариант как был)
Рисунок 4. Задаем свойсто ячейки "ПечЦена" в конструкторе макета 1С 7.7 что это именно параметр
Код отладки в процедура Сформировать перед выводом:
Если ФлагОтладка = 1 Тогда текстОтладка = "Отладка Товар: "+Номенклатура+", Типцены: "+Тип+" На дату: "+НаДату+", Ед: "+Единица+", Валюта "+ВыбВалюта+", ЦЕНА НА ПЕЧАТЬ: "+ЦенаЦены; Сообщить(ТекстОтладка, ); КонецЕсли;
В макет отчета добавлена колонка "цена" и в нее на всех режимах типовых настроек этого отчета должна выводится последняя цена на конечную дату формирования отчета в пересчете на выбранную валюту.
По-трудоемкости всего 5-6 правок кода, вынос в модуль формы отчета глобальной функции пересчета цен, правка макета для вывода отбора по добавленным реквизитам, колонки цена и наглядно продемонстрировать отладку. Главное правильно "подцепиться в нужных местах" расчет "ПечЦена":
// ПечатьСтроки()...И еще одна ПечатьДокумента ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+ Секц = Таб.ПолучитьСекцию(НазваниеСекции); Иначе ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+ Секц = Таб.ПолучитьСекцию(НазваниеСекции); Секц.Область(1,1,1,7).Объединить(); КонецЕсли; Таб.ВывестиСекцию(Секц); глОживить(1); КонецПроцедуры //ПечатьСтроки()
Также для наглядности не забыть строчку:
Возврат Окр(ЦенаЦены, 2); // До 0.01 руб.
с форматом 1С 7.7 уже для эстетов :)
Также для комиссионных товаров есть таблица значений добавил и в нее колонку в коде (видимо зря). А саму процедуру можно и из глобальника вызывать я убрал глПолучитьЦену на ПолучитьЦену
После синтаксического контроля в конфигураторе в режиме "1С 7.7: Предприятие" отладка проходит на первый взгляд успешно (к слову что отладчик запускается на этой платформе отдельно от конфигуратора, где редактируется наш код внешнего отчета 7.7 (см. рисунок 5):
Рисунок 5. Как проходит отладка и тестирование при включенной галочке отладочных сообщений (которую можно убратьв кофигураторе сделав невидимой и вернуть при необходимости).
У меня заработал на ТиС 9.2 с "наворотами" - проверял работает. Цену брать на последнюю дату отчета (или документа если по ним - тут уточнять уже надо логику что нужно получить) - так у меня все заработало :)
На производительность, увы, влияет, но в бюджет уложиться можно, да и в 1С 7.7 по-другому только прямые запросы или еще как, но уже в отдельной задаче.
Примерный вид работы следующий (курсы валют должны быть правильно заполнены и актуальны):
Вывод: 1С 7.7 по сравнению с современными УТ 11.1 на управляемых формах, СКД вообще "как игрушка" если удалось вспомнить и все сразу заработало.
Надеюсь, кому-то разработка как "шаблончик" будет полезна. Думаю, для серьезной работы нужны и итоги по группам, и пересчет цены выбранного типа по дате документа (актуально в таком виде как есть на сегодняшние сутки типа "анализ склада по ценам", а также грубый анализ себестоимости.