Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 19:42
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как автоматически добавить строку в табличную часть документа из справочника  (Прочитано 15767 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tekkonkinkreet

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-07
  • Сайт: 
  • Профессия: Ученик 1С
У меня есть документ заказ покупателя, при выборе среди реквизитов необходимости доставки, в табличной части автоматически должна появляться эта услуга и её цена(она создана в справочнике Номенклатура)

Вот например если просто значение не из справочника у меня получается:

Процедура Статус1ПриИзменении(Элемент)
ЭлементыФормы.Товары.ДобавитьСтроку();
СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
СтрокаТЧ.Количество = 1;

КонецПроцедуры

Буду очень благодарна помощи


Оффлайн zkolenko

  • **
  • Сообщений: 50
  • РЕПУТАЦИЯ: 17
  • КПД: 34%
  • Регистрация: 2010-08-02
  • Сайт: 
  • Профессия: Программист 8.1

Предлагаю решение этой задачи.
Находим в справочнике Номенклатура нужную услугу по коду (у меня услуга доставка
в справочнике находится с кодом 00075, код в виде строки, а у вас будет другой
код для доставки, так что проставите свой код) и
при установки флажка "НеобходимостьДоставки" добавляем эту услугу
в табличную часть документа которая у меня называется "Товары"
Но если вы снимаете флажок "НеобходимостьДоставки" тогда обходим
табличную часть документа и удаляем оттуда услугу доставки даже если
ее туда забивали руками.
В этой строчке
Строка.Цена = НужнаяУслуга.РеквизитЦеныТовара;
Вместо "РеквизитЦеныТовара" впишите название реквизита справочника номенклатуры
где у Вас храниться цена
Все. Теперь пробуйте.

Процедура НеобходимостьДоставкиПриИзменении(Элемент)
   НужнаяУслуга = Справочники.Номенклатура.НайтиПоКоду("00075");
   Если Элемент.Значение Тогда
      ЭлементыФормы.Товары.ДобавитьСтроку();
      Строка = ЭлементыФормы.Товары.ТекущиеДанные;
      Строка.Номенклатура = НужнаяУслуга;
      Строка.Количество = 1;
      Строка.Цена = НужнаяУслуга.РеквизитЦеныТовара;
   иначе
      Для Каждого Стр Из Товары Цикл
         Если Стр.Номенклатура = НужнаяУслуга Тогда
            Товары.удалить(Товары.Индекс(Стр));
         КонецЕсли;
      КонецЦикла;
   КонецЕсли;
КонецПроцедуры

Конечно это не самый лучший способ решения этого вопроса, так как если удалить
из справочника номенклатуры Услуги ДОСТАВКА или поменять ее код, тогда вышеприведенная
программа будет искать код 00075 а такого кода либо нет либо там будет другая услуга.
Есть более правильный способ и с защитой от неприятностей изменения кода услуги.
Если интересно, могу расказать :)
Но для этого нажмите на ссылочку с надписью "Сказать спасибо"

Оффлайн Tekkonkinkreet

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-07
  • Сайт: 
  • Профессия: Ученик 1С
Большое Вам спасибо :) все получилось :))
Мне конечно для студенческой работы хватит и этого, но уж интересно и как по-хорошему делать, так что пишите :)

Оффлайн zkolenko

  • **
  • Сообщений: 50
  • РЕПУТАЦИЯ: 17
  • КПД: 34%
  • Регистрация: 2010-08-02
  • Сайт: 
  • Профессия: Программист 8.1
Самый лучший способ это в справочнике Номенклатура создать предопределенный
элемент установить у него код и наименование, например код = "00000000001" а
имя = "УслугаДоставка", наименование это то что видит пользователь, больше здесь ничего заполнить неудасться.
В пользовательском режиме откроете этот проедопределенный элемент и дозаполните его
полностью. Там цену, и т.д. Теперь к этому предопределенному элементу мы
будем обращаться непосредственно из конфигуратора, как будто это перечисление, а в пользовательском режиме
его удалить никак нельзя, и если вы там что и поменяете то код и имя все
равно остануться как назвали в конфигураторе, даже если изменить код или наименование например не "УслугаДоставка" а "Услуга по доставке".
Теперь программа всегда найдет доставку и заполнит а код будет
выглядеть следующим образом.

Процедура НеобходимостьДоставкиПриИзменении(Элемент)
   НужнаяУслуга = Справочники.Номенклатура.УслугаДоставка;
   Если Элемент.Значение Тогда
      ЭлементыФормы.Товары.ДобавитьСтроку();
      Строка = ЭлементыФормы.Товары.ТекущиеДанные;
      Строка.Номенклатура = НужнаяУслуга;
      Строка.Количество = 1;
      Строка.Цена = НужнаяУслуга.РеквизитЦеныТовара;
   иначе
      Для Каждого Стр Из Товары Цикл
         Если Стр.Номенклатура = НужнаяУслуга Тогда
            Товары.удалить(Товары.Индекс(Стр));
         КонецЕсли;
      КонецЦикла;
   КонецЕсли;
КонецПроцедуры

я сам сейчас контрольную по экономике предприятия пишу, устал писать в тетради вот решил на форуме кому нибудь помочь.
Через месяц сессия а я как обычно в самый последний момент..... :)

Оффлайн Tekkonkinkreet

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-07
  • Сайт: 
  • Профессия: Ученик 1С
И ещё раз спасибо, буду знать :)
хотела б ещё вопрос задать тут, чтоб тему отдельную не создавать, если вы не против :)
у меня дальше по заданию нужно сделать отчет, который выводит информацию о заказах и в нем вручную напротив каждого заказа проставить фамилию водителя, а после доставки в отчете делать отметку о выполненной доставке. Я вот мало знакома с 1с, но в примерах нигде не видела чтоб в отчете можно было как в документе изменять поля. Вот. Собственно можно так делать или нет?

Оффлайн zkolenko

  • **
  • Сообщений: 50
  • РЕПУТАЦИЯ: 17
  • КПД: 34%
  • Регистрация: 2010-08-02
  • Сайт: 
  • Профессия: Программист 8.1
Я сейчас попробовал это сделать и у меня получилось следующее.
Создал макет, есть ячейка для заполнения заказов из запроса, есть ячейка "Водитель" для заполнения в ручную выбором его из справочника.Водители и ячейка "Доставлено" заполняется вручную из перечисления.ВариантыОтветов со значениями ДА или НЕТ.
В свойствах ячеек ВОДИТЕЛЬ и ДОСТАВЛЕНО нужно поставить галочку напротив "содержит значение" и установить тип значений как выше для них описано.

На форме создается реквизит с типом "табличный документ" и при нажатии на кнопку "сформировать" програмно заполняем макет с получеными заказами из запроса, и выводим его на форму.
Имеем:
Заказ           | Водитель           | Доставлено
ДокЗак№23  |                        |

теперь кликая по полю "водитель" открывается форма выбора водителя из справочника а кликая по полю "доставлено" выбираем ДА или НЕТ из перечисления.ВариантыОтветов

При закрытии отчета данные естественно не сохраняться.
Я тут думал над двумя вариантами сохранения отчета:
либо сохранять в файл, а потом можно его открыть из файла с сохраненными значениями кто вез и кто уже доставил
либо сохранять в табличную часть отчета, которую нужно будет создать в отчете.

С работой не в форме с реквизитами а в поле отчета столкнулся впервые.
К чему додумался за несколько часов размышлений, то Вам сейчас и расказал.

Если кто знает варианты решения задачи, напишите пожалуйста.
Самому интересно какими способами, кроме вышеописаных ее можно решить.

Но то, что еще как минимум несколько способов ее решения есть я ни капельки не сомневаюсь.


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4490
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 15970
Последний ответ 16 Авг 2012, 12:07
от Will
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7764
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4795
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika
Заполнение столбца табличной части документа по умолчанию и выборка из табличной части.

Автор marshalbratskРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 1601
Последний ответ 25 Май 2016, 19:38
от marshalbratsk

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
141 Сообщений
AIFrame
71 Сообщений
ilyay ilyay
65 Сообщений
alex0402
52 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
31 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 350
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal