Обновление АВ 1.0 для КМТКС
1. Зайти в папку "Автоверсант" - "Обновления", найти текстовые документы с названием, похожим на "Изменения".
В этих текстовых документах написаны изменения, которые нужно внести в конфигурацию.
2. Начать проверять и вводить изменения. В документе «Счет на оплату покупателю» должен быть реквизит «фмДокументОснование».
Информация для создания реквизита:
После каждого изменения обязательно сохраняться!!!
3. В этом же документе в разделе «Ввод на основании». В списке «Является основанием для…» должен быть документ «Счет на оплату покупателю».
4. В этом же документе в модуле объекта должна быть часть кода с пометкой «фм».
Процедура ЗаполнитьПоДокументуОснованию(Основание)
***
Пока Выборка.Следующий() Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Содержание = РаботаСНоменклатуройКлиентСерверБП.СодержаниеУслуги(
СтрШаблон(НСтр("ru = 'Арендная плата (%1)'"), Выборка.Содержание),
Перечисления.Периодичность.Месяц,
ЭтотОбъект.Дата);
НоваяСтрока.Количество = Выборка.Количество;
НоваяСтрока.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.КоммерческоеПредложение") Тогда
// Заполним реквизиты шапки по документу основанию.
ЗаполнениеДокументов.ЗаполнитьПоОснованию(ЭтотОбъект, Основание);
РеквизитыКЗаполнению = "ДополнительныеУсловия,СуммаСкидки,НомерВерсии";
ДанныеОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Основание, РеквизитыКЗаполнению);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеОснования);
// Заполним табличные части
Отбор = Новый Структура;
Отбор.Вставить("НомерВерсии", ДанныеОснования.НомерВерсии);
ТоварыВерсии = Основание.Товары.Выгрузить(Отбор);
Для Каждого СтрокаТовары Из ТоварыВерсии Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовары);
КонецЦикла;
//ФМ{
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.фмРеестрТранспортныхУслуг") Тогда
// Заполним реквизиты шапки по документу основанию.
ЗаполнениеДокументов.ЗаполнитьПоОснованию(ЭтотОбъект, Основание);
фмДокументОснования=Основание.ссылка;
если фмДокументОснования.услуги.количество()>0 тогда
ставкандс=фмДокументОснования.услуги.получить(0).ставкандс;
конецесли;
Если Контрагент.код = "00-003085" и организация.ИНН = "1639030113" Тогда //Аверс
СтруктурнаяЕдиница = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета", "40702810701490002357");
ИначеЕсли Контрагент.код = "00-003085" и организация.ИНН = "1639015958" Тогда //Аверс
СтруктурнаяЕдиница = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета", "40702810301490002359");
ИначеЕсли (Контрагент.ИНН = "5047071528" или Контрагент.ИНН = "5032080978" или Контрагент.ИНН = "7719726605" или Контрагент.ИНН = "7733043569" или Контрагент.ИНН = "5012093506" или Контрагент.ИНН = "5032289680")
и организация.ИНН = "1639030113" Тогда //Альфа банк
СтруктурнаяЕдиница = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета", "40702810929140003583");
КонецЕсли;
если основание.короткийсчет тогда
новаястрока=Товары.Добавить();
новаястрока.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию("Транспортно-зкспедиционные услуги");
новаястрока.Содержание="Транспортно-экспедиционные услуги по доставке груза согласно реестра №"+сокрлп(основание.номерреестра)+" от "+сокрлп(сред(основание.дата,1,10));
новаястрока.Количество=основание.услуги.количество();
новаястрока.Сумма=?(основание.суммавключаетндс,основание.суммадокумента,основание.услуги.итог("Сумма"));
новаястрока.СуммаНДС=основание.услуги.итог("СуммаНДС");
новаястрока.СтавкаНДС=ставкандс;
иначе
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Ссылка", Основание.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| АктОбОказанииПроизводственныхУслугУслуги.Номенклатура,
| АктОбОказанииПроизводственныхУслугУслуги.СтавкаНДС,
| АктОбОказанииПроизводственныхУслугУслуги.Цена,
| АктОбОказанииПроизводственныхУслугУслуги.Количество КАК Количество,
| АктОбОказанииПроизводственныхУслугУслуги.Сумма КАК Сумма,
| АктОбОказанииПроизводственныхУслугУслуги.СуммаНДС КАК СуммаНДС,
| АктОбОказанииПроизводственныхУслугУслуги.Содержание
|ИЗ
| Документ.фмРеестрТранспортныхУслуг.Услуги КАК АктОбОказанииПроизводственныхУслугУслуги
|ГДЕ
| АктОбОказанииПроизводственныхУслугУслуги.Ссылка = &Ссылка";
ВыборкаУслуг = Запрос.Выполнить().Выбрать();
Пока ВыборкаУслуг.Следующий() Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаУслуг);
КонецЦикла;
конецесли;
//ФМ}
КонецЕсли;
КонецПроцедуры
5. В критерии отбора «Связанные документы» во вкладке «Данные» тип должен содержать определенные документы с пометкой «фм», «тф» и «ав», а в свойствах критерия отбора в составе должны быть помечены почти все реквизиты и табличные части документов с пометкой «тф» и «фм» (не критично, если все) и реквизиты документов «Счет на оплату покупателю» и «Счет на оплату поставщика».
Если нет какого-то реквизита в составе - необходимо проверить тип реквизита. Ссылочный тип реквизита должен быть включен во вкладке данные Связанных документов
Тип:
Состав:
6. В свойствах общей команды «Дополнительные печатные формы объекта» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф».
7. В свойствах общей команды «Показать движения документа» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф»
8. В свойствах определяемого типа «Объект с дополнительными командами» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф».
9. В свойствах определяемого типа «Владелец файлов» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф».
10. В свойствах определяемого типа «Владелец присоединенных файлов» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф».
11. В свойствах общей команды «Связанные документы» тип параметра команды должен содержать определенные документы с пометкой «фм» и «тф».
12. В общем модуле «Общего назначения» должна быть часть кода с пометкой "фм".
Функция ПроверитьПроведенностьДокументов(Знач Документы) Экспорт
Результат = Новый Массив;
ШаблонЗапроса =
"ВЫБРАТЬ
| ПсевдонимЗаданнойТаблицы.Ссылка КАК Ссылка
|ИЗ
| &ИмяДокумента КАК ПсевдонимЗаданнойТаблицы
|ГДЕ
| ПсевдонимЗаданнойТаблицы.Ссылка В(&МассивДокументов)
//| И НЕ ПсевдонимЗаданнойТаблицы.Проведен";
| И (ПсевдонимЗаданнойТаблицы.ПометкаУдаления)"; //ФМ
ТекстОбъединитьВсе =
"
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
ИменаДокументов = Новый Массив;
Для Каждого Документ Из Документы Цикл
МетаданныеДокумента = Документ.Метаданные();
Если ИменаДокументов.Найти(МетаданныеДокумента.ПолноеИмя()) = Неопределено
И Метаданные.Документы.Содержит(МетаданныеДокумента)
И МетаданныеДокумента.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
ИменаДокументов.Добавить(МетаданныеДокумента.ПолноеИмя());
КонецЕсли;
КонецЦикла;
ТекстЗапроса = "";
Для Каждого ИмяДокумента Из ИменаДокументов Цикл
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
ТекстЗапроса = ТекстЗапроса + ТекстОбъединитьВсе;
КонецЕсли;
ТекстПодзапроса = СтрЗаменить(ШаблонЗапроса, "&ИмяДокумента", ИмяДокумента);
ТекстЗапроса = ТекстЗапроса + ТекстПодзапроса;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивДокументов", Документы);
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецЕсли;
Возврат Результат;
КонецФункции
13. В свойствах подписки на события «Перед записью документа проверка номера по дате организации подразделению» источник должен содержать "фмРеестрТранспортныхУслуг".
14. В свойствах подписки на события «Установить префикс информационной базы организации подразделения номеру документа» источник должен содержать "фмРеестрТранспортныхУслуг" и "фмПретензии".
15. В свойствах подписки на события «Зарегистрировать данные первичных документов» источник должен содержать "фмПретензии".
16. Проверить "Полные права". Должна стоять галочка на Удалении, но должны быть сняты галочки на Интерактивном удалении.
17. В табличной части «По данным организации» документа «Акт сверки взаиморасчетов» есть реквизит «Документ». В свойствах этого реквизита в типе должен быть указан документ «Претензии».
18. В регистре сведений «Данные первичных документов» в свойствах измерения «Документ» в типах должен быть указан документ «Претензии».
19. В свойствах подписки на события «Перед записью документа проверка номера по дате организации подразделению» обработчик должен содержать часть кода с пометкой "фм".
Процедура ПроверитьНомерДокументаПоДатеОрганизацииПодразделению(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
ИначеЕсли Источник.ЭтоНовый() Тогда
//ФМ
если типзнч(источник)=тип("ДокументОбъект.СчетНаОплатуПокупателю") тогда
источник.номер=сокрлп(источник.фмДокументОснования.Номер);
иначеесли типзнч(источник)=тип("ДокументОбъект.РеализацияТоваровУслуг") тогда
источник.номер=сокрлп(источник.СчетНаОплатуПокупателю.Номер);
конецесли;
//ФМ--
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ИмяОрганизации = ПрефиксацияОбъектовСобытия.ИмяРеквизитаОрганизация(Источник.Метаданные());
ИмяПодразделения = ИмяРеквизитаПодразделение(Источник.Ссылка);
СтарыеРеквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.Ссылка,
"Дата" + "," + ИмяОрганизации + "," + ИмяПодразделения);
СтарыйПрефикс = ПрефиксОрганизацииПодразделения(СтарыеРеквизиты[ИмяОрганизации], СтарыеРеквизиты[ИмяПодразделения]);
НовыйПрефикс = ПрефиксОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения]);
Если НовыйПрефикс <> СтарыйПрефикс
ИЛИ НЕ ПрефиксацияОбъектовСлужебный.ДатыОбъектаОдногоПериода(
СтарыеРеквизиты.Дата,
Источник.Дата,
Источник.Ссылка) Тогда
Источник.Номер = "";
КонецЕсли;
КонецПроцедуры
20. В свойствах подписки на события «Перед записью документа проверка номера по дате и организации» обработчик должен содержать часть кода с пометкой "фм".
Процедура ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)
Если Объект.ОбменДанными.Загрузка Тогда
Возврат;
ИначеЕсли Объект.ЭтоНовый() Тогда
//ФМ
если типзнч(Объект)=тип("ДокументОбъект.СчетФактураВыданный") тогда
если типзнч(Объект.ДокументОснование) = тип("ДокументСсылка.РеализацияТоваровУслуг") тогда
Объект.номер=сокрлп(объект.ДокументОснование.Номер);
конецесли;
//если Объект.документыоснования.количество()=1 тогда
для каждого текстрока из Объект.документыоснования цикл
если типзнч(текстрока.документоснование)=тип("ДокументСсылка.РеализацияТоваровУслуг") тогда
Объект.номер=сокрлп(текстрока.ДокументОснование.Номер);
конецесли;
конеццикла;
//конецесли;
конецесли;
//ФМ--
Возврат;
КонецЕсли;
Если ПрефиксацияОбъектовСлужебный.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Дата,
Объект[ИмяРеквизитаОрганизация(Объект.Метаданные())]) Тогда
Объект.Номер = "";
КонецЕсли;
КонецПроцедуры
21. Запрет на редактирование в общем модуле «Даты запрета изменения БП» - часть кода с пометкой "фм".
Процедура ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(Знач ИсточникиДанных) Экспорт
// Данные(Таблица, ПолеДаты, Раздел, ПолеОбъекта)
//ФМ
ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.фмРеестрТранспортныхУслуг", "Дата" , "БухгалтерскийУчет", "Организация");
//ФМ--
***
КонецПроцедуры
22. В подписке на события «Проверить дату запрета изменения перед записью документа БП» в источнике должен быть добавлен "фмРеестрТранспортныхУслуг".
23. Запрет на редактирование в общем модуле «Управление печатью переопределяемый» - часть кода с пометкой "фм".
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
СписокОбъектов.Добавить(Справочники.БанковскиеСчета);
СписокОбъектов.Добавить(Справочники.ВетеринарноСопроводительныйДокументВЕТИС);
СписокОбъектов.Добавить(Справочники.ДоверенностиНалогоплательщика);
СписокОбъектов.Добавить(Справочники.ДоговорыКонтрагентов);
СписокОбъектов.Добавить(Документы.фмЗаявкиПоЭкспедиции); //ФМ
СписокОбъектов.Добавить(Документы.фмРеестрТранспортныхУслуг); //ФМ
***
КонецПроцедуры
No Comments