Доброе время суток, подскажите, в 1С не силен, но стоит задача, ввести на основании документа Поступления ТМЦ - Реализация Розница. В конфигураторе в документе Поступления ТМЦ поставил галачку нужного мне документа (РеализацияРозница) в 1С появился этот документ, но вылетает ошибка - Неверный вид документа - основания! не могу понять что еще нужно сделать, в самом модуле что-то прописать?
По теме из базы знаний
- Гибкая настройка контроля ввода документов,проведения,отмены проведения
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- Новый релиз 1С:ТОИР КОРП 3.0.4.1: развитие блока МТО, совершенствование анализа причин дефектов, новое в "Мобильной бригаде" и не только!
- Электронная почта в 1С:Документооборот
- Изменение заказов клиента путем ввода корректировочного документа (по аналогии с механизмом УТ 10.3)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) В процедуре ВводНаОсновании() необходимо обойти все реквизиты документа основания и заполнить их в новом документе. Так же сделать цикл по строкам документа основания и заполнить табличную часть нового документа.
Посмотрите, как это делается в других документах.
Посмотрите, как это делается в других документах.
Можно поподробнее...
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
Как вариант поставить OpenConf (телепат)
в процедурке ВводНаОсновании
написать код типа
док = СоздатьОбъект("РеализацияРозница");
потом написать док.НовыйДокумент() (как то так :) ) телепат предложит заполнение структуры документа выбрать автозаполнение.
Телепат опишет все реквизиты вместе с обходом строк таблицы. ну а дальше прямое переприсваивание реквизитов которые совпадают в поступлении и в реализации и проверка как оно работает, с последущей отладкой того что не заполняется.
или как вариант если телепат воткнуть нет умения. просто открываем реквизиты реализации розница
и каждый реквизит в прямую присваиваем. Юзать глобальные процедуры и тем более что то там менять крайне не рекомендуется :)
И сразу походу вопрос возникает, а при вводе на основании продажные цены откуда брать будем ? После ввода на основании руками ставить ?
в процедурке ВводНаОсновании
написать код типа
док = СоздатьОбъект("РеализацияРозница");
потом написать док.НовыйДокумент() (как то так :) ) телепат предложит заполнение структуры документа выбрать автозаполнение.
Телепат опишет все реквизиты вместе с обходом строк таблицы. ну а дальше прямое переприсваивание реквизитов которые совпадают в поступлении и в реализации и проверка как оно работает, с последущей отладкой того что не заполняется.
или как вариант если телепат воткнуть нет умения. просто открываем реквизиты реализации розница
и каждый реквизит в прямую присваиваем. Юзать глобальные процедуры и тем более что то там менять крайне не рекомендуется :)
И сразу походу вопрос возникает, а при вводе на основании продажные цены откуда брать будем ? После ввода на основании руками ставить ?
В документе РеализацияРозница нужно поправить функцию ЗаполнениеПоДокументуОснованию()
Там указывается для каких документов -оснований какая функция заполнения по документу основанию будет вызываться. И скорее всего придется это заполнение писать самостоятельно. так что лучше все таки наймите специалиста.
Там указывается для каких документов -оснований какая функция заполнения по документу основанию будет вызываться. И скорее всего придется это заполнение писать самостоятельно. так что лучше все таки наймите специалиста.
процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
не увидел проццыкла по строкам докумеента а только заполнение шапки
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
не увидел проццыкла по строкам докумеента а только заполнение шапки
Процедура ВводНаОсновании(ДокументОснование)
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
нужно добавить обработку строк таблицы.
Перем ОписаниеОш;
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита);
Если ДокументОснование.Вид() = "ЗаявкаПокупателя" Тогда
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.Прочее
Иначе
ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам;
КонецЕсли;
СуммаВклНДС = 1;
СуммаВклНП = 1;
УчитыватьНДС = 1;
УчитыватьНП = 1;
УчитыватьЕНВД = 0;
ПриИзмененииСклада(); // если склад облагается ЕНВД, то проставим флаг в документе
Если ЗаполнениеПоДокументуОснованию(ОписаниеОш) = 0 Тогда
Сообщить(ОписаниеОш);
СтатусВозврата(0);
КонецЕсли;
СтарыйСклад = Склад;
СтарыйКонтрагент = Контрагент;
СтарыйДоговор = Договор;
КонецПроцедуры // ВводНаОсновании()
нужно добавить обработку строк таблицы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот