Меня взяли франчи, как программиста (пофиг на каком языке), за две недели впихнули мне в голову еще один язык (к моим С++, Делфи, С# это было просто), а дальше полевая работа сделала из меня программиста 1С и дала знания по бухгалтерскому учету. Начальник сказал, что главное не язык, а тип мышления.
Процедура ВидЦеныПриИзменении(Элемент) //здесь перебираем в цикле строки табличной части ТМЦ, в каждой вызываем хитрую процедуру РозничнаяЦена() Для каждого СтрокаТабличнойЧастиИз ТабличнаяЧасть1 Цикл СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Дата, СтрокаТабличнойЧасти.ТМЦ); РасчетСуммы.РасчитатьСумму(СтрокаТабличнойЧасти); КонецЦикла; КонецПроцедуры
Совет: всегда давайте реквизитам и табличным частям осмысленные названия. Для примера, посмотрите, каким образом построен вызов процедур при изменении цен в стандартных документах (реализацию можно взять).
Ну вот этот кусочек туда и впихнуть, в эту обработку. А еще лучше попробовать ее перенести в модуль документа. Посмотрите для примера процедуру ПередЗаписью() в модуле документа и обратите внимание на то, как рассчитывается реквизит СуммаДокумента.
Реквизит в модуле форме рассчитывается? Если да - тогда надо в тот код, что я написала добавить еще расчет реквизита и присвоение.
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); ДокументОбъект.СуммаПотрачено = ...; //здесь итоги складываем или что там надо посчитать ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
В этом случае обязательно сделать копию базы. На копии потренироваться с групповой обработкой. Поинтересуйтесь у бухгалтеров нужны ли комментарии в авансовых отчетах. В групповой обработке отобрать все документы Авансовый отчет, на второй закладке выбрать действие Изменить комментарий. Выполнить. В этом случае проведения не будет, только запись.
Если своей обработкой... Можно получить выборку документов запросом, а можно перебрать без запроса.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АвансовыйОтчет.Ссылка |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет |ГДЕ | АвансовыйОтчет.Дата МЕЖДУ &Дата1 И &Дата2";
//делаем выборку Выборка = Запрос.Выполнить().Выбрать(); //перебираем элементы выборки в цикле Пока Выборка.Следующий() Цикл //получим сам объект, чтобы иметь возможность его записать ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); Сообщить("Записан " + ДокументОбъект); КонецЦикла; Предупреждение("Обработка завершена!");
Это код для своей обработки - не нужно трогать ни реквизиты, ни комментарий.
А все, что выше - я говорила для универсальной встроенной обработки "Групповая обработка справочников и документов". Там нет понятия простой перезаписи документов - или проведение, или изменение реквизитов.
Вообще надо инициировать запись документа и процедуру по расчету нового реквизита. Значит, надо реквизит какой-то поменять. Теоретически - пробел в Комментарий записать. А если там уже был комментарий заполнен?.. Но я бы лучше написала свою обработку в три строки. Быстро, сурово, ничего лишнего.
Можно обработкой записать, если сильно надо. ДокументОбъект.Записать(РежимЗаписиДокумента.Запись) - это не перепроведение, на партии запасов не повлияет.
Была у меня такая задачка... Только мне надо было основное контактное лицо проверять. И еще адреса и телефоны. При этом, к адресам и телефонам можно обратиться и проверить в процедуре ПередЗаписью() в форме (ЭлементыФормы.КонтактнаяИнформация.Значение). Поэтому я на тот момент ограничилась просто сообщением о том, что значение не заполнено.
Вижу еще один вариант. Добавить текстовый реквизит - КонтактноеЛицо. Проверять его, как обычный реквизит. Если не заполнен - грязно ругаться и отказываться записывать элемент. После записи парсить строку и создавать такое контактное лицо. Ну или всяческие вариации такого действа - можно даже без реквизита справочника обойтись, только реквизит формы сделать. Но лучше реквизит справочника - чтобы сохранялся.
Похвальна, конечно, тяга к знаниям Я далеко не всех своих могла заставить конфигуратор открыть, когда связи не было, чтобы я продиктовала, что сделать...
У вас есть два варианта для действий: 1. Использовать вид взаиморасчетов "По счетам" 2. Лучше, конечно, обратиться к специалисту, хоть задачка и простенькая. Если сами что-то делаете - нужно обязательно сделать копию базы данных перед проведением опытов. А еще лучше - опыты проводить на копии.
Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПоставщику") Или (ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПоставщика") И ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСч етам) Тогда Сделка = Основание; //djess-------- комментарии пишем обязательно, когда что-то меняем ДокументОснование = Основание; //это заполнение вашего добавленного реквизита //djess---------------------------------------------------------------------------------- ИначеЕсли (ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПоставщика") И ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗа казам) И ТипЗнч(Основание.ДокументОснование) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда Сделка = Основание.ДокументОснование; Иначе Сделка = Неопределено; КонецЕсли;
В критериях отбора отметить его флажком.
Плюс стоит иметь в виду, что при обновлениях это обязательно всплывет и причинит определенные неудобства, если будет обновляться документ "Поступление товаров (услуг)". Особенно если обновляетесь сами, без помощи специалиста.
При вводе на основании документа "Налоговая накладная" из документа "Платежное поручение входящее" пользователю предлагается открыть обработку заполнения налоговой накладной номенклатурным составом. В самой обработке предлагается выбрать счет (или реализацию). Если счета/реализации нет, то заполнять номенклатурный состав в документе "Налоговая накладная" только вручную.
Цитата(djess @ 23.07.14, 0:57)
на одном компьютере все идет как надо,все тянется, все действия те же, документы создавались на одном основании и по одному принципу. На втором же-не получается ((
Так не бывает, если на этих компьютерах открывается одна и та же база.
Цитата(djess @ 23.07.14, 0:57)
я имела ввиду вкладку "номенклатура"-туда не тянутся записи,которые должны бы тянуться из "основания" (сумма,и прочие заполняемые колонки)
Если "Налоговая накладная" вводится на основании "Реализация товаров (услуг)", и есть первое событие, то все заполняется. Если первого события нет - опять предлагается открыть обработку заполнения налоговой накладной. Проверить необходимо регистры "Ожидаемый и подтвержденный НДС продаж" (или приобретений, если речь идет о закупках) и "Продажи (налоговый учет)". Можно проверить с помощью Отчеты - Универсальные (можно взять Остатки/обороты или Универсальный отчет).
В 1С предусмотрено заполнение реквизита Сделка, если взаиморасчеты ведутся по заказам или по счетам. Конкретно в Вашем случае должно быть "По счетам".
Задача проста, если и правда нужен реквизит. В документе "Поступление товаров (услуг)" должен быть реквизит типа ДокументСсылка.СчетНаОплатуПоставщика, при вводе на основании реквизит обязан заполняться, в критериях отбора нужно отметить флажком этот документ.
Не стоит бездумно корячить конфигурацию, лучше разобраться сначала с типовыми возможностями и понять, для каких целей нужно это изменение. В данном случае, заполнение реквизита предусмотрено только в случае ведения взаиморасчетов по счетам.
1. Сделайте копию базы данных. 2. Сообщение при открытии базы данных свидетельствует о том, что изменения в структуру базы данных вы не внесли, а только сохранили конфигурацию. Для внесения изменений необходимо: Главное меню - Конфигурация - Обновить конфигурацию базы данных.
1. Запишутся, если у вас нет дополнительных обработок в подписках на события. 2. Если есть сомнения в том, что "не факт, что они в таком виде запишутся", то зачем тогда вообще к ним запрос делать? Цель-то конечная есть какая-то?
Если НоваяСтрока Тогда Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ВидДеятельностиНДС) Тогда СтрокаТабличнойЧасти.ВидДеятельностиНДС = Перечисления.ВидыДеятельностиНДС.Облагаемая; СтрокаТабличнойЧасти.ВидНалоговойДеятельности = Справочники.ВидыНалоговойДеятельности.ОблагаемаяПоОбычнойСтавке; СтрокаТабличнойЧасти.СтатьяКнигиПриобретения = ОпределитьСтатьюНалоговойДекларации(СтрокаТабличнойЧасти); КонецЕсли; КонецЕсли;
КонецПроцедуры
А табличное поле на основании заполняется из заказа? Если да - то процедура ОбработкаЗаполнения в модуле документа.
Поскольку в запросе указано ПодраздОрг.Родитель, то вот Вам и выдает второй уровень. Возможно, будет легче понять, если озвучите цель получения всей глубины иерархии справочника Подразделения.
Судя по номеру релиза, у вас не Зарплата и Кадры для Украины, а Бухгалтерия для Украины. В данной конфигурации документа "Табель учета рабочего времени" не предусмотрено.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!