Заполнение и изменение периодических реквизитов в справочнике через документ в 1с7.7
Всем привет! Скажите пожалуйста, каким кодом, можно изменять реквизиты справочника из табличной части документа. в 1с7.7
Справочни - Классы;
Реквизиты справочника:
Классы - Периолический;
КатУч1 - Переодический;
КатУч2 - Переодический;
КатУч3 - Переодический;
Реквизиты табличной части документа одноименные.
Заранее спасибо.
Справочни - Классы;
Реквизиты справочника:
Классы - Периолический;
КатУч1 - Переодический;
КатУч2 - Переодический;
КатУч3 - Переодический;
Реквизиты табличной части документа одноименные.
Заранее спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДокумента);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
СпрКлассы.Классы = Док.Классы;
СпрКлассы.КатУч1 = Док.КатУч1;
СпрКлассы.КатУч2 = Док.КатУч2;
СпрКлассы.КатУч3 = Док.КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Показать
(2)
Большое спасибо за отзыв и помощь, но ругается на переменную Док...
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДокумента);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
СпрКлассы.Классы = Док.Классы;
СпрКлассы.КатУч1 = Док.КатУч1;
СпрКлассы.КатУч2 = Док.КатУч2;
СпрКлассы.КатУч3 = Док.КатУч3;
СпрКлассы.Записать();
КонецЦикла;
СпрКлассы.ИспользоватьДату(ДатаДокумента);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
СпрКлассы.Классы = Док.Классы;
СпрКлассы.КатУч1 = Док.КатУч1;
СпрКлассы.КатУч2 = Док.КатУч2;
СпрКлассы.КатУч3 = Док.КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Большое спасибо за отзыв и помощь, но ругается на переменную Док...
(3)
Если не из документа... то ждите, пока штатный телепат форума выйдет из отпуска.
P.S. За 6 с лишком лет на форуме можно было научиться хотя бы мало-мальски вразумительно ставить задачу.
ругается на переменную Док...
Если код выполняется непосредственно из документа (из модуля или из модуля формы), то просто уберите "Док." из кода.
Если не из документа... то ждите, пока штатный телепат форума выйдет из отпуска.
P.S. За 6 с лишком лет на форуме можно было научиться хотя бы мало-мальски вразумительно ставить задачу.
(5)
P.S. За 6 с лишком лет на форуме можно было научиться хотя бы мало-мальски вразумительно ставить задачу.
Я тут, ранее покупал нужные мне обработки, или заказывал какие то проекты... сейчас вот сам решил посидеть и поизучать... начал с 7-ки т.к. на мой взгляд она более лёгкая, и для того чтоб понять оно вообще моё или нет, решил попробовать... так что камнями пожалуйста не кидайте...))
(3) ну это документ, по которому заполняются реквизиты справочника
(2) я бы дополнил
(2) я бы дополнил
// если нет реквизита обработки с нужным документом, найдем его по номеру
Док = СоздатьОбъект("Документ.КакойТоТам");
Док.НайтиПоНомену(<НомерДокумента>);
лДокумент = Док.ТекущийДокумент();
СпрКлассы = СоздатьОбъект("Справочник.Классы");
лДокумент .ВыбратьСтроки();
Пока лДокумент .ПолучитьСтроку() = 1 Цикл
// чтобы заполнять реквизиты справочника, нужно получит элемент этого справочника
СпрКлассы.НайтиПоРеквизиту(<НужноеЗначениеРеквизита>);
// или СпрКлассы.НайтиПоКоду(<НужныйКод>);
// или создать новый СпрКлассы.Новый();
лЭлемент = СпрКассы.ТекущийЭлемент();
лЭлемент.ИспользоватьДату(лДокумент.ДатаДок);
лЭлемент.Классы = лДокумент .Классы;
лЭлемент.КатУч1 = лДокумент .КатУч1;
лЭлемент.КатУч2 = лДокумент .КатУч2;
лЭлемент.КатУч3 = лДокумент .КатУч3;
лЭлемент .Записать();
КонецЦикла;
Показать
(4)
Вот так синтаксис без ошибок, но в клиенте при проведении получается вот это...
Процедура ОбработкаПроведения()
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Классы = СпрКлассы.Класс;
КатУч1 = СпрКлассы.КатУч1;
КатУч2 = СпрКлассы.КатУч2;
КатУч3 = СпрКлассы.КатУч3;
СпрКлассы.Записать();
КонецЦикла;
КонецПроцедуры
ПоказатьВот так синтаксис без ошибок, но в клиенте при проведении получается вот это...
СпрКлассы.Записать();
{Документ.ЗаполнениеСправочникаКлассы.Модуль Документа(11)}: Не выбран элемент!
(11)
Тогда в табличной части документа, нужно выбирать Класс из справочника... а задача стоит обратная... нужно документом сформировать справочник классы с численностью на дату, что бы в дальнейшем можно было менять численность в справочнике именно документом...
Тогда в табличной части документа, нужно выбирать Класс из справочника... а задача стоит обратная... нужно документом сформировать справочник классы с численностью на дату, что бы в дальнейшем можно было менять численность в справочнике именно документом...
(15)В общем задача стоит такая....
Есть документ ЗаполнениеСправочникаКлассы, в нем есть табличная часть: Классы (Строка), КатУч1(Число), КатУч2(Число), КатУч3(число)...
Есть Справочник Классы, в нем реквизиты: Класс(Строка), КатУч1(Число), КатУч2(Число), КатУч3(число).
Нужно, что бы при проведении документа, заполнялся справочник классы, данными из табличной части Документа НА ДАТУ... потому как в будущем могут быть документы, которые могут изменять реквизиты справочника. Что бы в дальнейшем можно было делать перерасчеты...
Есть документ ЗаполнениеСправочникаКлассы, в нем есть табличная часть: Классы (Строка), КатУч1(Число), КатУч2(Число), КатУч3(число)...
Есть Справочник Классы, в нем реквизиты: Класс(Строка), КатУч1(Число), КатУч2(Число), КатУч3(число).
Нужно, что бы при проведении документа, заполнялся справочник классы, данными из табличной части Документа НА ДАТУ... потому как в будущем могут быть документы, которые могут изменять реквизиты справочника. Что бы в дальнейшем можно было делать перерасчеты...
Воот. Теперь начинает что-то проясняться.
Тогда примерно так:
Тогда примерно так:
Процедура ОбработкаПроведения()
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Классы", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Классы = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Показать
(21)
Чутка пропустили момент.. реквизит справочника Классы называется Класс...
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Классы", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Классы = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
ПоказатьСпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Классы", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Классы = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Чутка пропустили момент.. реквизит справочника Классы называется Класс...
(23)
Где я такое сказал?
Есть документ ЗаполнениеСправочникаКлассы, в нем есть табличная часть: Классы (Строка), КатУч1(Число), КатУч2(Число), КатУч3(число)...
Есть Справочник Классы, в нем реквизиты: Класс(Строка), КатУч1(Число), КатУч2(Число), КатУч3(число).
Нужно, что бы при проведении документа, заполнялся справочник классы, данными из табличной части Документа НА ДАТУ... потому как в будущем могут быть документы, которые могут изменять реквизиты справочника. Что бы в дальнейшем можно было делать перерасчеты...
Есть Справочник Классы, в нем реквизиты: Класс(Строка), КатУч1(Число), КатУч2(Число), КатУч3(число).
Нужно, что бы при проведении документа, заполнялся справочник классы, данными из табличной части Документа НА ДАТУ... потому как в будущем могут быть документы, которые могут изменять реквизиты справочника. Что бы в дальнейшем можно было делать перерасчеты...
Где я такое сказал?
В сообщении (1). Но не суть.
Процедура ОбработкаПроведения()
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Класс", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Класс = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Показать
(25)
Теперь такое вот...
Если СпрКлассы.НайтиПоРеквизиту("Класс", Классы) = 0 Тогда
{Документ.ЗаполнениеСправочникаКлассы.Модуль Документа(7)}: Недостаточное число параметров передано при вызове функции/процедуры объекта
СпрКлассы = СоздатьОбъект("Справочник.Классы");
СпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Класс", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Класс = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
ПоказатьСпрКлассы.ИспользоватьДату(ДатаДок);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если СпрКлассы.НайтиПоРеквизиту("Класс", Классы) = 0 Тогда
СпрКлассы.Новый();
СпрКлассы.Класс = Классы;
КонецЕсли;
СпрКлассы.КатУч1 = КатУч1;
СпрКлассы.КатУч2 = КатУч2;
СпрКлассы.КатУч3 = КатУч3;
СпрКлассы.Записать();
КонецЦикла;
Теперь такое вот...
Если СпрКлассы.НайтиПоРеквизиту("Класс", Классы) = 0 Тогда
{Документ.ЗаполнениеСправочникаКлассы.Модуль Документа(7)}: Недостаточное число параметров передано при вызове функции/процедуры объекта
(32) Нужна помощь...
Есть такая таблица (во вложении)
Никак не могу сообразить, как 1) Сделать так, что бы результат попадал в поле результат без конопки расчитать и 2) все тоже самое только с кнопкой расчитать...
В модуле документа такой код
Понимаю что где то я недопонимаю, но где понять могу, но мозг не понимает как это исправить ))
Есть такая таблица (во вложении)
Никак не могу сообразить, как 1) Сделать так, что бы результат попадал в поле результат без конопки расчитать и 2) все тоже самое только с кнопкой расчитать...
В модуле документа такой код
Функция РасчетПедОклад()
РезультатКатУч1 = КатУч1 * Нагрузка * Константа.СтоимостьУЧ * Константа.КоэфПересчета;
РезультатКатУч2 = (КатУч2 * Нагрузка * Константа.СтоимостьУЧ * Константа.КоэфПересчета) * 2;
РезультатКатУч3 = (КатУч3 * Нагрузка * Константа.СтоимостьУЧ * Константа.КоэфПересчета) * 3;
Возврат РезультатКатУч1+РезультатКатУч2+РезультатКатУч3;
КонецФункции]
Понимаю что где то я недопонимаю, но где понять могу, но мозг не понимает как это исправить ))
Прикрепленные файлы:
Док.НайтиПоНомеру(<НомерДокумента>);
лДокумент = Док.ТекущийДокумент();
лДокумент = Док.ТекущийДокумент();
Так тоже делать не надо..
Как минимум
Результат = Док.НайтиПоНомену(<НомерДокумента>);
Если Результат =0 Тогда
// здесь отлуп
Возврат;
КонецЕсли;
лДокумент = Док.ТекущийДокумент();
(46) да...
маленько переписал код.... так правильно?
маленько переписал код.... так правильно?
Функция РасчетПедОклад()
СтоимостьУЧ = Константа.СтоимостьУЧ.Получить(ДатаДок);
КоэфПересчета = Константа.КоэфПересчета.Получить(ДатаДок);
РезультатКатУч1 = КатУч1 * Нагрузка * СтоимостьУЧ * КоэфПересчета;
РезультатКатУч2 = (КатУч2 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 2;
РезультатКатУч3 = (КатУч3 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 3;
Возврат РезультатКатУч1 + РезультатКатУч2 +РезультатКатУч3;
КонецФункции;
(47) неа..
Вот это воткни в модуль, и во всех числовых колонках вызов еЁ
Вот это воткни в модуль, и во всех числовых колонках вызов еЁ
Процедура РасчетПедОклад()
СтоимостьУЧ = Константа.СтоимостьУЧ.Получить(ДатаДок);
КоэфПересчета = Константа.КоэфПересчета.Получить(ДатаДок);
РезультатКатУч1 = КатУч1 * Нагрузка * СтоимостьУЧ * КоэфПересчета;
РезультатКатУч2 = (КатУч2 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 2;
РезультатКатУч3 = (КатУч3 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 3;
Результат = РезультатКатУч1 + РезультатКатУч2 +РезультатКатУч3;
КонецПроцедуры
Ну и КоэфПересчета , аналогично:
Перем СтоимостьУЧ ,КоэфПересчета ;
Процедура ПриОткрытии()
СтоимостьУЧ = Константа.СтоимостьУЧ.Получить(ДатаДок);
КоэфПересчета = Константа.КоэфПересчета.Получить(ДатаДок);
КонецПроцедуры
Процедура РасчетПедОклад()
РезультатКатУч1 = КатУч1 * Нагрузка * СтоимостьУЧ * КоэфПересчета;
РезультатКатУч2 = (КатУч2 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 2;
РезультатКатУч3 = (КатУч3 * Нагрузка * СтоимостьУЧ * КоэфПересчета) * 3;
Результат = РезультатКатУч1 + РезультатКатУч2 +РезультатКатУч3;
КонецПроцедуры
Показать
(50)И новая головная боль...
Имею Справочник Сотрудники, в нем есть реквизит "Категория" (Справочник периодический) и является отдельным справочником метаданных в котором есть реквизит "Процент", так вот задача, как мне в процедуре, обратить к реквизиту Процент через справочник сотрудники....
Имею Справочник Сотрудники, в нем есть реквизит "Категория" (Справочник периодический) и является отдельным справочником метаданных в котором есть реквизит "Процент", так вот задача, как мне в процедуре, обратить к реквизиту Процент через справочник сотрудники....
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот