Продвинутый курс. Занятие №14
Четвертое занятие 2-го блока продвинутого курса.
Необходимо изучить следующие главы текущего блока.
Глава 10. Система компоновки данных
Глава 11. Бизнес-процессы
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
Задание выполнено.
1. Используется два источника данных: данные шапки, данные табличной части. Реквизиты шапки и подвала выведены с помощью макета СКД. Остальное стандартно.
2. чтобы получить остатки по данным документа используется прием соединение таблиц самой с собой.
Обратная связь:
1. Новые темы:
– блокировка данных;
– агрегаты;
– бизнес-процессы;
– учет себестоимости по методу FEFO;
– частично СКД.
2. Самая трудная тема – расчет себестоимости, самая незнакомая – бизнес-процессы.
3. Темы раскрыты достаточно.
Задание выполнила.
1. В документе Реализации добавила макет типа СхемаКомпоновкиДанных, набор данных – запрос где выбирается информация из таблицы Реализации, параметры: Ссылка на документ, СуммаПрописью – строка с суммой документа прописью. Создала команду документа Печать, в которой вызываю серверную процедуру получения табличного документа. В ней получаю схему, задаю параметры, вывожу результат. В настройках схемы определила две группы детальных записей: в первой(ШапкаДокумента) – реквизиты шапки(в других настройках тип макета – вертикально); во второй(Товары) – табличная часть товары, в макетах добавила макет группировки (Товары: Общий итог подвал) где переопределила вывод подвала итога и добавила строку с выводом суммы документа прописью. Не понравился момент что печатная форма выводится в отдельном окне, хотелось чтобы она выводилась в окне документа Реализации, но не нашла как такое сделать(искала в свойствах табличного документа как переоределить окно вывода).
2. “Ведомость по товарам” по документам к сожалению самой постоить не получилось, буду смотреть решение.
Задание выполнила. Перчать реализации реализовала с помощью внешнего отчета, который открываю в форме документа с помощью команды. Ведомость по товарам: в отдельные временные таблицы собираю приходы и расходы, затем использую объединение таблиц, полученный результат соединяю сам с собой и получаю остатки.
Наконец-то появилась возможность продолжать изучение материалов курса и выполнять домашние задания. Буду нагонять :)
Задание №14 выполнено.
Первая часть довольно простая, создал макет схемы СКД в ветке документа, а также команду печати. В качестве источника данных – 2 запроса, первый выбирает данные шапки, второй – табл. часть документа. В созданном варианте набор “шапка” выводится по типу “вертикально”, табличная часть как обычно. Не сразу сообразил как вывести прописью итог, но потом использовал ЧислоПрописью в формуле выражения для ресурса Сумма, также в методе Инициализировать процессора компоновки данных установил флаг использования внешних функций в значение Истина.
Вторая часть тоже особых сложностей не вызвала. Все данные получаются одним пакетным запросом. В первом пакете объединяются данные выборки из таблиц документов поступления и реализации товаров и результат помещается в ВТ. Во втором пакете применяем уже не раз использовавшийся прием соединения таблицы самой с собой для того, чтобы вычислить начальный остаток по каждому документу.
Текст запроса:
<code>
ВЫБРАТЬ
ПоступлениеТоваровИУслугТовары.Ссылка,
ПоступлениеТоваровИУслугТовары.Номенклатура КАК Номенклатура,
ПоступлениеТоваровИУслугТовары.Количество КАК Приход,
0 КАК Расход,
ПоступлениеТоваровИУслугТовары.Ссылка.МоментВремени КАК МоментВремени
ПОМЕСТИТЬ Движения
ИЗ
Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РеализацияТоваровИУслугТовары.Ссылка,
РеализацияТоваровИУслугТовары.Номенклатура,
0,
РеализацияТоваровИУслугТовары.Количество,
РеализацияТоваровИУслугТовары.Ссылка.МоментВремени
ИЗ
Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Движения.Номенклатура КАК Номенклатура,
ЕСТЬNULL(СУММА(Движения1.Приход) – СУММА(Движения1.Расход), 0) КАК НачОстаток,
Движения.Приход КАК Приход,
Движения.Расход КАК Расход,
ЕСТЬNULL(СУММА(Движения1.Приход) – СУММА(Движения1.Расход), 0) + Движения.Приход – Движения.Расход КАК КонОстаток,
Движения.Ссылка КАК Документ,
Движения.МоментВремени
ИЗ
Движения КАК Движения
ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения1
ПО Движения.Номенклатура = Движения1.Номенклатура
И Движения.МоментВремени > Движения1.МоментВремени
ГДЕ
Движения.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
Движения.Ссылка,
Движения.Приход,
Движения.Расход,
Движения.МоментВремени
</code>
Также создал параметр Период типа Стандартный период чтобы иметь возможность удобно задавать границы отчета, соответственно параметры ДатаНач и ДатаКон берутся из него.
Для поля номенклатура установил роль Измерение, для полей Документ и МоментВремени – период (1 и 2 соответственно), а также роли начального и конечного остатков.
Обратная связь по 2 блоку.
Как всегда было много новой информации. Больше всего впечатлила глава по СКД, узнал много новых и неочевидных нюансов поведения этой системы. Также очень полезными были главы по расчету себестоимости (особо отмечу альтернативный метод FIFO), а также по бизнес-процессам, т.к. плотно с этим механизмом пока не сталкивался.
Добрый день.
Подскажите, плз , по СКД.
Есть внешняя обработка. Задача сформировать и вывести в таблицу значений. Проблема: при первом формировании все ОК. При последующем выдает ошибку “ошибка создания источника доступных настроек” в строке “МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьИзВременногоХранилища(URLСхемыКД), НастройкиКомпоновки
, , , Тип(“ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений”), , );”.
В чем может быть проблема?
Разобрался.
Дело в том, что использовал для получения урла схемы КД метод “ПоместитьВоВременноеХранилище” без второго параметра “уникальный идентификатор”. и после первого вызова серверного метода схема КД в хранилище уничтожалась.
Для формирования печатной формы создал схему компоновки данных и команду печати, которая программно формирует табличный документ на основании созданной схемы. Для вывода итоговой суммы прописью использовал предопределенный макет группировки. Единственное, чего не смог догадаться сделать – установить свойство “Тип макета” в значение “Вертикально” для правильного вывода шапки документа. Ведомость по товарам сформировал с помощью запроса, в основе которого лежит соединение таблицы приходов и расходов с самой собой для получения начальных остатков по номенклатуре и регистратору. Также для правильного расчета остатков установил соответствующие роли для полей схемы компоновки данных.
Обратная связь:
1. Узнал много нового, особенно про способы расчета себестоимости, управляемые блокировки, СКД. К сожалению, пока не успеваю изучить бизнес-процессы, но обязательно доберусь до них.
2. Наиболее трудная тема – СКД. Огромное количество настроек, непростой редактор – все это усложняет процесс освоения. Однако, благодаря просмотренным урокам и выполненному дз база уже заложена, и теперь остается углублять свои знания и отрабатывать их на практике.
3. Все темы достаточно раскрыты.
Отчитаюсь по задания, н успел к сожалению своему вовремя. Первая часть задания выполнена примерно так же как и в решении, а вот вторая у меня очень и очень хромает. Благо в решении увидел как его надо было решить.
Много интересного в этом блоке для себя открыл связанное с расчетом остатков, себестоимости. Очень интересная тема СКД.
Хотелось бы еще рассмотреть отдельно тему расчета НДС, все же НДС поступает одной суммой, а продается большей, вот интересно как при этом организовать регистры.
Пожелание понятно, обдумаем.
Задание выполнил. В решение не смотрел (тем более, что по плану оно должно было быть выложено завтра :) )
1. В документ реализации добавил макет СКД, в котором создал настройки для формирования печатной формы. Для каждой табличной части и шапки у меня отдельные набор данных, которые связаны между собой. При выводе печатной формы я программно компоную макет и вывоже его на печать, как показано в материалах. Сумму прописью формирую с помощью вычисляемого поля с экспортной процедурой общего модуля, в которой использую ЧислоПрописью.
2. Решил поставленную задачу запросом, то есть не использовал связи наборов данных. Сам запрос:
<code>
ВЫБРАТЬ
ПоступлениеТоваровИУслугТовары.Номенклатура КАК Номенклатура,
ПоступлениеТоваровИУслугТовары.Ссылка КАК Регистратор,
СУММА(ПоступлениеТоваровИУслугТовары.Количество) КАК Приход,
СУММА(0) КАК Расход,
СУММА(ПоступлениеТоваровИУслугТовары.Количество – 0) КАК Разница
ПОМЕСТИТЬ ВТПриходы
ИЗ
Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
ГДЕ
ПоступлениеТоваровИУслугТовары.Ссылка.Проведен = ИСТИНА
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровИУслугТовары.Номенклатура,
ПоступлениеТоваровИУслугТовары.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РеализацияТоваровИУслугТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровИУслугТовары.Ссылка КАК Регистратор,
СУММА(0) КАК Приход,
СУММА(РеализацияТоваровИУслугТовары.Количество) КАК Расход,
СУММА(0 – РеализацияТоваровИУслугТовары.Количество) КАК Разница
ПОМЕСТИТЬ ВТРасходы
ИЗ
Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
ГДЕ
РеализацияТоваровИУслугТовары.Ссылка.Проведен = ИСТИНА
СГРУППИРОВАТЬ ПО
РеализацияТоваровИУслугТовары.Номенклатура,
РеализацияТоваровИУслугТовары.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТПриходы.Номенклатура,
ВТПриходы.Регистратор,
ВТПриходы.Приход,
ВТПриходы.Расход,
ВТПриходы.Разница
ПОМЕСТИТЬ ВТДанныеБезГруппировки
ИЗ
ВТПриходы КАК ВТПриходы
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТРасходы.Номенклатура,
ВТРасходы.Регистратор,
ВТРасходы.Приход,
ВТРасходы.Расход,
ВТРасходы.Разница
ИЗ
ВТРасходы КАК ВТРасходы
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТДанныеБезГруппировки.Номенклатура КАК Номенклатура,
ВТДанныеБезГруппировки.Регистратор,
СУММА(ВТДанныеБезГруппировки.Приход) КАК Приход,
СУММА(ВТДанныеБезГруппировки.Расход) КАК Расход,
СУММА(ВТДанныеБезГруппировки.Разница) КАК Разница
ПОМЕСТИТЬ ВТДанные
ИЗ
ВТДанныеБезГруппировки КАК ВТДанныеБезГруппировки
СГРУППИРОВАТЬ ПО
ВТДанныеБезГруппировки.Номенклатура,
ВТДанныеБезГруппировки.Регистратор
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЕСТЬNULL(ВТДанные.Номенклатура, ВТДанные1.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(ВТДанные.Регистратор, ВТДанные1.Регистратор) КАК Регистратор,
СУММА(ВТДанные1.Разница) КАК НачальныйОстаток,
МИНИМУМ(ВТДанные.Приход) КАК Приход,
МИНИМУМ(ВТДанные.Расход) КАК Расход
ПОМЕСТИТЬ ВТНачОстаток
ИЗ
ВТДанные КАК ВТДанные
ЛЕВОЕ СОЕДИНЕНИЕ ВТДанные КАК ВТДанные1
ПО ВТДанные.Номенклатура = ВТДанные1.Номенклатура
И ВТДанные.Регистратор.МоментВремени > ВТДанные1.Регистратор.МоментВремени
СГРУППИРОВАТЬ ПО
ЕСТЬNULL(ВТДанные.Регистратор, ВТДанные1.Регистратор),
ЕСТЬNULL(ВТДанные.Номенклатура, ВТДанные1.Номенклатура)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЕСТЬNULL(ВТДанные.Номенклатура, ВТДанные1.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(ВТДанные.Регистратор, ВТДанные1.Регистратор) КАК Регистратор,
МИНИМУМ(ВТДанные.Приход) КАК Приход,
МИНИМУМ(ВТДанные.Расход) КАК Расход,
СУММА(ВТДанные1.Разница) КАК КонечныйОстаток
ПОМЕСТИТЬ ВТКонОстаток
ИЗ
ВТДанные КАК ВТДанные
ЛЕВОЕ СОЕДИНЕНИЕ ВТДанные КАК ВТДанные1
ПО ВТДанные.Номенклатура = ВТДанные1.Номенклатура
И ВТДанные.Регистратор.МоментВремени >= ВТДанные1.Регистратор.МоментВремени
СГРУППИРОВАТЬ ПО
ЕСТЬNULL(ВТДанные.Регистратор, ВТДанные1.Регистратор),
ЕСТЬNULL(ВТДанные.Номенклатура, ВТДанные1.Номенклатура)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТНачОстаток.Номенклатура КАК Номенклатура,
НАЧАЛОПЕРИОДА(ВТКонОстаток.Регистратор.Дата, ДЕНЬ) КАК День,
ВТКонОстаток.Регистратор КАК Регистратор,
ВТНачОстаток.НачальныйОстаток,
ВТНачОстаток.Приход,
ВТНачОстаток.Расход,
ВТКонОстаток.КонечныйОстаток
ИЗ
ВТНачОстаток КАК ВТНачОстаток
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКонОстаток КАК ВТКонОстаток
ПО ВТНачОстаток.Номенклатура = ВТКонОстаток.Номенклатура
И ВТНачОстаток.Приход = ВТКонОстаток.Приход
И ВТНачОстаток.Расход = ВТКонОстаток.Расход
И ВТНачОстаток.Регистратор = ВТКонОстаток.Регистратор
УПОРЯДОЧИТЬ ПО
Номенклатура,
ВТКонОстаток.Регистратор.Дата,
ВТКонОстаток.Регистратор.Ссылка
</code>
Вывод совпадает с выводом вирт. таблицы “ОстаткиИОбороты”
Резюме по 2 блоку:
1. Самое важное вынесенное знание – то, что СКД – это не “геморойный” инструмент для построения простых отчетов, а система, на которой можно построить практически любой отчет. Много новых приемов узнал из тем по СКД, расчету себестоимости (FEFO :) ) и бизнес-процессам.
2. Наибольшие затруднения в теме по бизнес-процессам, так как это редко встречающийся в практике инструмент.
3. По блокировкам и транзакциям. Связь с такими понятиями как уровень изолированности транзакций, “грязное”, “фантомное” и др. виды “чтения”; в чем заключаются преимущества “версионных” СУБД по сравнению с “транзакционными” и наоборот. Но, наверное, это уже выходит за рамки курса по 1С :(
>Но, наверное, это уже выходит за рамки курса по 1С
Да, выходит. Но пожелание мы записали.
>тем более, что по плану оно должно было быть выложено завтра
Небольшая ошибка. Надеюсь больше не повторится :)
Домашнее задание практически решено
1. В макеты док-та Реализация добавил СКД, прописал наборы данных по реквизитам шапки, тч и итоговой суммы. В Выражении итоговой суммы прописал экспортную функцию общего модуля, которая возвращает ЧислоПрописью. В настройках скд сделал 3 ветки – Реквизиты объединил в группу с параметром вывода Вертикально, тч и итоговую сумму вывел без изменений. По умолчанию в настройках наложил отбор по ссылке документа. В Реализации также добавил команду, в модуле прописал программный вывода скд с установкой отбора по ссылке
2. К сожалению, не хватило терпения определить НачОст по регистратору. Остальные поля получил с помощью следующего запроса
<code>
ВЫБРАТЬ
ПоступлениеТоваровИУслугТовары.Номенклатура КАК Номенклатура,
СУММА(ПоступлениеТоваровИУслугТовары.Количество) КАК Количество,
ПоступлениеТоваровИУслуг.Ссылка
ПОМЕСТИТЬ Товары
ИЗ
Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ПО ПоступлениеТоваровИУслугТовары.Ссылка = ПоступлениеТоваровИУслуг.Ссылка
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровИУслугТовары.Номенклатура,
ПоступлениеТоваровИУслуг.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РеализацияТоваровИУслугТовары.Номенклатура,
СУММА(-РеализацияТоваровИУслугТовары.Количество),
РеализацияТоваровИУслугТовары.Ссылка
ИЗ
Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
СГРУППИРОВАТЬ ПО
РеализацияТоваровИУслугТовары.Ссылка,
РеализацияТоваровИУслугТовары.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Товары.Номенклатура КАК Номенклатура,
МАКСИМУМ(Товары.Количество) КАК Количество,
Товары.Ссылка,
ВЫБОР
КОГДА Товары.Количество > 0
ТОГДА Товары.Количество
ИНАЧЕ 0
КОНЕЦ КАК Приход,
ВЫБОР
КОГДА Товары.Количество < 0
ТОГДА -Товары.Количество
ИНАЧЕ 0
КОНЕЦ КАК Расход,
СУММА(Товары1.Количество) КАК КонОст
ИЗ
Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ Товары КАК Товары1
ПО Товары.Номенклатура = Товары1.Номенклатура
И Товары.Ссылка.МоментВремени >= Товары1.Ссылка.МоментВремени
СГРУППИРОВАТЬ ПО
Товары.Номенклатура,
Товары.Ссылка,
ВЫБОР
КОГДА Товары.Количество > 0
ТОГДА Товары.Количество
ИНАЧЕ 0
КОНЕЦ,
ВЫБОР
КОГДА Товары.Количество < 0
ТОГДА -Товары.Количество
ИНАЧЕ 0
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Номенклатура,
Товары.Ссылка.МоментВремени
</code>
Результат верен.
Наверняка дальше надо джойнить последнюю выборку с самой собой по Ном=Ном и Дата1>=Дата2 с целью поиска предшествующего документа, но если честно, очень хочется спать.
Обратная связь:
1.Новыми темами оказались Агрегаты, Блокировки, РАУЗ, много интересного материала по СКД, отдельное спасибо за бизнес-процессы, по которой не очень много информации. Совершенно спокойно стал относиться к программной работе с СКД, раньше боялся как огня – эти чудовищно длинные названия свойств и методов напоминали километровые слова из немецкого языка =)
2. Наибольшие затруднения по СКД в части нестандартных соединений наборов(пример с иерархией), наверное еще разок пересмотрю
3. В МГ хотелось бы рассмотреть примеры построения сложных отчетов с “нестандартным” внешним видом. Зачастую руководство хочет видеть отчеты по каким то своим жестко определенным макетам, с получением наборов данных проблема нет, а вот из-за внешнего вида порой приходиться отказываться от СКД и возвращаться к некогда традиционному ручному формированию макета
>Наверняка дальше надо джойнить последнюю выборку с самой собой по Ном=Ном и Дата1>=Дата2 с целью поиска предшествующего документа
Есть вариант проще. Но спать тоже полезно :)
Пожелания понятны, будем анализировать.
Вопросы:
1. Практически все главы содержат новую для меня информацию. Очень подробно рассмотрена СКД, спасибо.
2. Самая сложная тема – расчет себестоимости.
1.Сформируем команду печати с помощью конструктора печати. Вместо стандартного макета создадим схему компоновки данных. Скопируем сформированный запрос из процедуры “Печать” модуля менеджера документа. В настройки добавим две группировки типа “Детальные записи” для шапки и табличной части с соответствующими выбранными полями.
Для вывода шапки можно задать заголовок и вертикальный тип макета, но лучше создать предопределенный макет типа:
Реализация товаров и услуг №[Номер] от [Дата]
Организация: [Организация]
Контрагент: [Контрагент]
Договор: [Договор]
Для вывода суммы прописью зададим предопределенный макет с параметром <СуммаПрописью> для заголовка группировки “Товары”, тип “Подвал”. Выражение параметра – ЧислоПрописью(Сумма,”ru_RU”,”рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2″).
В процедуре “Печать” модуля менеджера документа сформируем на основании схемы компоновки данных табличный документ.
Процедура Печать(ТабДок, Ссылка)
Схема= Документы.РеализацияТоваровИУслуг.ПолучитьМакет(“СКД”);
Настройки=Схема.НастройкиПоУмолчанию;
Схема.Параметры.Ссылка.Значение=Ссылка;
КомпоновщикМакета= Новый КомпоновщикМакетаКомпоновкиДанных;
Макет=КомпоновщикМакета.Выполнить(Схема, Настройки);
ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет,,,истина);
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
2. Запрос для получения таблицы остатков и оборотов:
ВЫБРАТЬ
ПоступлениеТоваровИУслугТовары.Номенклатура КАК Номенклатура,
ПоступлениеТоваровИУслугТовары.Ссылка КАК Регистратор,
СУММА(ПоступлениеТоваровИУслугТовары.Количество) КАК Количество,
СУММА(ПоступлениеТоваровИУслугТовары.Количество) КАК Приход,
СУММА(0) КАК Расход
ПОМЕСТИТЬ Движения
ИЗ
Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
ГДЕ
ПоступлениеТоваровИУслугТовары.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровИУслугТовары.Номенклатура,
ПоступлениеТоваровИУслугТовары.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РеализацияТоваровИУслугТовары.Номенклатура,
РеализацияТоваровИУслугТовары.Ссылка,
СУММА(-РеализацияТоваровИУслугТовары.Количество),
СУММА(0),
СУММА(РеализацияТоваровИУслугТовары.Количество)
ИЗ
Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
ГДЕ
РеализацияТоваровИУслугТовары.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
РеализацияТоваровИУслугТовары.Номенклатура,
РеализацияТоваровИУслугТовары.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Движения.Номенклатура КАК Номенклатура,
Движения.Регистратор КАК Регистратор,
СУММА(ЕСТЬNULL(НачальныеОстатки.Количество, 0)) КАК НачальныйОстаток,
МИНИМУМ(Движения.Приход) КАК Приход,
МИНИМУМ(Движения.Расход) КАК Расход
ПОМЕСТИТЬ ОстаткиОбороты
ИЗ
Движения КАК Движения
ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК НачальныеОстатки
ПО Движения.Номенклатура = НачальныеОстатки.Номенклатура
И Движения.Регистратор.МоментВремени > НачальныеОстатки.Регистратор.МоментВремени
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
Движения.Регистратор
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиОбороты.Номенклатура КАК Номенклатура,
ОстаткиОбороты.Регистратор КАК Регистратор,
ОстаткиОбороты.НачальныйОстаток,
ОстаткиОбороты.Приход,
ОстаткиОбороты.Расход,
ОстаткиОбороты.НачальныйОстаток + ОстаткиОбороты.Приход – ОстаткиОбороты.Расход КАК КонечныйОстаток,
НАЧАЛОПЕРИОДА(ОстаткиОбороты.Регистратор.Дата, ДЕНЬ) КАК ПериодДень
ИЗ
ОстаткиОбороты КАК ОстаткиОбороты
ГДЕ
ОстаткиОбороты.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Для корректного расчета остатков указываем роли для полей аналогично ВТ “Остатки и обороты”.
Далее настраиваем ресурсы, параметры, группировки, выходные поля.
Ну так как решение уже выложили – отчитываюсь.
Честно скажу, смог сделать только первую часть задания. И то, печатная форма у меня получилась не совсем приемлемая. Хотя, я пытался привести ее к виду настоящей печатной формы. Но, посмотрев решение, понял, что это и не надо было.
По второй части задания я ушел вообще куда-то в дебри. :( Была мысль об объединении временной таблицы самой с собой, но затык произошел на получении начального остатка (из-за неправильного условия связи, как оказалось). Хотел попробовать решить иным способом. Как итог – развалил и то, что раньше написал. :)
Вывод: надо больше практиковаться. :)
Обратная связь:
1. Из нового – некоторые виды расчета себестоимости, большая часть СКД, бизнес-процессы.
2. Возможности СКД просто поражают. Из-за этого иногда теряешься.
3. Отправил на почту.