15.12.14 – 11:23
Подскажите, а как мне найти документ по номеру за определенную дату, делаю следующим образом Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(ПостулениеУслуг.НомерДок, ПостулениеУслуг.ДатаДок), но он ищет документы за весь год, а не по дате ПостулениеУслуг.ДатаДок, так как нумерация документа периодичность в пределах года
1 – 15.12.14 – 11:24
Запросом
2 – 15.12.14 – 11:38
(1) а без запроса как то можно еще ?
3 – 15.12.14 – 11:39
(2) Можно. Но лучше запросом.
4 – 15.12.14 – 11:40
(3) а как?
5 – 15.12.14 – 11:41
ВЫБРАТЬ
Ссылка
Из
Документ.ПоступлениеТоваровУслуг
ГДЕ
Номер = &Номер И Дата МЕЖДУ &НачалоДня и &КОнецДня
6 – 15.12.14 – 11:41
(3) а как без запроса?
7 – 15.12.14 – 11:41
(2) А чем запрос не угодил?
8 – 15.12.14 – 11:42
(6) Выборка + перебор
9 – 15.12.14 – 11:42
(7) Ну не умеет она запросом.
11 – 15.12.14 – 11:43
(9) Так и незапросом тоже не умеет 🙂
Модератор
12 – 15.12.14 – 11:43
Предупреждаю: Оффтопик в тематических ветках запрещен.
13 – 15.12.14 – 11:47
(7) (8) (9) (11) (12) Ребята, хочу сделать таким образом Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Реализация.НомерДок, Реализация.ДатаДок), но чтоб выбирал именно на ту дату которая указана, а не смотрел в пределах года, скажите возможно ли такое, еси да то как?
14 – 15.12.14 – 11:48
(13) Нет, так получится искать только по периоду нумерации (году). Можно сделать элементарным простым запросом, текст которого выше.
15 – 15.12.14 – 11:48
(13) Запросом делай.
16 – 15.12.14 – 11:49
(13) А вот низя.
<ДатаИнтервала> (необязательный)
Тип: Дата.
Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.
17 – 15.12.14 – 11:50
1. Напиши функцию с запросом.
2. Используй ее где надо.
3. …
4. PROFIT
18 – 15.12.14 – 11:51
(15) (16) Вы там за синтаксис-помощник не подеритесь 😉
19 – 15.12.14 – 11:58
&НаСервере
Функция НайтиДокумент()
Выборка = Документы.Документ2.Выбрать(Дата(“20141017000000”),Дата(“20141018000000”));
Пока Выборка.Следующий() Цикл
Если Выборка.Номер = “000000002” Тогда
Возврат Выборка.Дата;
КонецЕсли;
КонецЦикла;
КонецФункции
но лучше запросом
20 – 15.12.14 – 12:03
(13) Попробуй метод ПолучитьДанныеВыбора(), в параметрах этого метода можно наложить любой отбор. НО! это гораздо сложнее, чем запросом.
21 – 15.12.14 – 12:05
(20) а можете пример привести?
22 – 15.12.14 – 12:09
не могу
23 – 15.12.14 – 12:10
это очень сложно для меня, попросите GROOVY
24 – 15.12.14 – 12:10
(21) Может постараетесь запросом решить задачу. И запрос уже готов. А?
25 – 15.12.14 – 12:11
(23) Это даже я не умею!
26 – 15.12.14 – 12:11
попробую методом (19), всем спасибо за помощь)
27 – 15.12.14 – 12:12
(ушел убиваться об стену)
28 – 15.12.14 – 12:28
(26) почему всё-таки отказались от
Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(ПостулениеУслуг.НомерДок, ПостулениеУслуг.ДатаДок) ??
чем не устроило?
29 – 15.12.14 – 12:34
(28) он ищет документы за весь год, а мне нужно за определенную дату ПостулениеУслуг.ДатаДок
30 – 15.12.14 – 12:39
(29) Так чем запрос не угодил?
31 – 15.12.14 – 12:48
(29) Что это у вас с базой, если в пределах одного интервала нумерации есть несколько документов с одним номером?
32 – 15.12.14 – 12:57
(31) я переношу документы из 7.7 и там доки разных видов, а в 8 одного
33 – 15.12.14 – 12:59
(32) Советую о КД почитать. Удобная штука.
34 – 15.12.14 – 13:00
(32) … и вся эта фигня будет в цикле по документам. Жесть.
35 – 15.12.14 – 14:01
(32) Так вы же ищите уже в 8-ке. Там, где одного вида. Не может уже в 8-ке быть такой ситуации.
36 – 15.12.14 – 14:13
(35) Легко.
Д = ТекущаяДата();
Для й = 1 по 10 Цикл
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Док.Дата = Д;
Док.Номер = “00000000001”;
Док.ОбменДанными.Загрузка = Истина;
Док.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла
37 – 15.12.14 – 15:46
(36) Да-да. И в модуле объекта везде понатыкать “ОбменДанными.Загрузка = Истина;”, чтоб наверняка.
mehfk
38 – 15.12.14 – 15:52
Это из методики разработки, принятой в вашей организации?
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
/// Как выбрать и упорядочить документы за период /// в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере() // найдём все документы поступления еды за 2014 год // упорядочив их по возрастанию даты Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить(ВыборкаДокументов.Ссылка); КонецЦикла; КонецПроцедуры /// Как найти документ по номеру в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоНомеруНаСервере() // найдём поступление еды № ВМБП-000005 за 2014 год Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата И | Номер = &ВыбНомер"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); Запрос.УстановитьПараметр("ВыбНомер", "ВМБП-000005"); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Если ВыборкаДокументов.Следующий() Тогда Сообщить(ВыборкаДокументов.Ссылка); Иначе Сообщить("Документ с таким номером не существует!"); КонецЕсли; КонецПроцедуры /// Как найти документы по реквизиту в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоРеквизитуНаСервере() // найдём все документы поступления еды // от поставщика ООО "Поле" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Поставщик |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Поставщик = &ВыбПоставщик |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр( "ВыбПоставщик", Справочники.Поставщики.НайтиПоНаименованию("ООО ""Поле""") ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Поставщик ); КонецЦикла; КонецПроцедуры /// Как выбрать все документы, которые не проведены и /// не помечены на удаление в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере() // найдём не проведенные и не помеченные на удаление // документы поступления еды Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Проведен, | ПометкаУдаления |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Проведен = ЛОЖЬ И | ПометкаУдаления = ЛОЖЬ |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Проведен + " " + ВыборкаДокументов.ПометкаУдаления ); КонецЦикла; КонецПроцедуры /// Как найти подчиненные документы в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиПодчиненныеДокументыНаСервере() // Рассмотрим работу с подчиненными (связанными) документами // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный. // Документ СчетФактураПолученный вводится на основании документа // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной // по отношению к поступлению. // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном // документе через табличную часть ДокументыОснования. // Почему через табличную часть? Потому что один документ может зависеть // (быть подчиненным) сразу от нескольких родителей (оснований). // Пример №1. // У нас есть ссылка на поступление товаров и услуг. Требуется найти // счёт-фактуры, которые были введены на основании этого поступления. // В дереве подчиненности эти фактуры будут подчинены (зависимы) от // документа поступления. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.ДокументОснование = | &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("0000-000004", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка; Сообщить(ПодчиненнаяФактура); КонецЦикла; // Пример №2. // У нас есть ссылка на счет-фактуру полученную. Требуется найти, // документы, на основании которых она была введена (родителей). Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументОснование |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.Ссылка = | &ВыбСчетФактура"; Запрос.УстановитьПараметр("ВыбСчетФактура", Документы.СчетФактураПолученный.НайтиПоНомеру("0000-000007", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование; Сообщить(РодительФактуры); КонецЦикла; КонецПроцедуры /// Как перебрать (перечислить) строки табличной части документа в 1с 8.3, 8.2 &НаСервере Процедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере() // У документа ПоступлениеЕды есть табличная часть 'Еда'. // У этой табличной части есть колонки: Номенклатура, Количество, // Сумма. ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // перечислим строки табличной части этого документа // при помощи объектной техники Для Каждого Строка Из ПоступлениеСсылка.Еда Цикл Сообщить( Строка.Номенклатура.Наименование + " " + Строка.Количество + " шт. " + Строка.Сумма + " руб." ); КонецЦикла; // при помощи запроса Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеЕдыЕда.Номенклатура, | ПоступлениеЕдыЕда.Количество, | ПоступлениеЕдыЕда.Сумма |ИЗ | Документ.ПоступлениеЕды.Еда КАК ПоступлениеЕдыЕда |ГДЕ | ПоступлениеЕдыЕда.Ссылка = &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( ВыборкаДетальныеЗаписи.Номенклатура.Наименование + " " + ВыборкаДетальныеЗаписи.Количество + " шт. " + ВыборкаДетальныеЗаписи.Сумма + " руб." ); КонецЦикла; КонецПроцедуры &НаСервере Процедура СозданиеИИзменениеДокументовНаСервере() /// Как создать новый документ в 1с 8.3, 8.2 // создадим новый документ поступление еды Поступление = Документы.ПоступлениеЕды.СоздатьДокумент(); // заполним шапку документа Поступление.Дата = ТекущаяДата(); Поступление.Поставщик = Справочники.Поставщики.НайтиПоНаименованию( "ООО ""Кузбас""" ); Поступление.Склад = Справочники.Склады.НайтиПоНаименованию( "Основной" ); // заполним табличную часть Еда НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; /// Как записать документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Запись); /// Как провести документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Проведение); /// Как отменить проведение документа в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения); /// Как внести изменения в документ по ссылке в 1с 8.3, 8.2 // зачастую у нас есть только ссылка на документ // и чтобы по ней получить сам объект документа // для изменения нужно вызывать метод ПолучитьОбъект // найдём документ продажа еды под номером ВМБП-000001 // для лаконичности примера воспользуемся не запросом, // а объектной техникой СсылкаНаПродажу = Документы.ПродажаЕды.НайтиПоНомеру( "ВМБП-000001", '20141231' // поиск среди документов 2014 года ); // нам вернули не сам документ, а ссылку (указатель) на него // проверим - нашёлся ли вообще документ Если СсылкаНаПродажу.Пустая() Тогда Сообщить("Документ не найден."); Иначе // получим сам документ по ссылке Продажа = СсылкаНаПродажу.ПолучитьОбъект(); // вот его уже можно изменять и записывать Продажа.Клиент = Справочники.Клиенты.НайтиПоНаименованию( "Пётр" ); Продажа.Записать(); КонецЕсли; /// Как получить пустую ссылку типа документ в 1с 8.3, 8.2 ПустаяСсылка = Документы.ПродажаЕды.ПустаяСсылка(); Если ПустаяСсылка.Пустая() Тогда Сообщить("Ссылка действительно пустая."); КонецЕсли; /// Как скопировать существующий документ в 1с 8.3, 8.2 // скопируем найденный документ на продажу и запишем // как новый документ от сегодняшнего числа КопияПродажи = СсылкаНаПродажу.Скопировать(); КопияПродажи.Дата = ТекущаяДата(); КопияПродажи.Комментарий = "Копия документа " + Строка(СсылкаНаПродажу); // запишем и проведём документ КопияПродажи.Записать(РежимЗаписиДокумента.Проведение); /// Как заблокировать документ перед изменениями /// в 1с 8.3, 8.2 // выполним блокировку документа // от изменения другими режимами или пользователями Продажа = СсылкаНаПродажу.ПолучитьОбъект(); Если Не Продажа.Заблокирован() Тогда Продажа.Заблокировать(); // тут идёт какой-то долгий алгоритм // в результате которого мы меняем // заблокированный элемент Продажа.Комментарий = "Документ изменён."; Продажа.Записать(); // и только потом освобождаем его // для других режимов и пользователей Продажа.Разблокировать(); КонецЕсли; /// Как создать новый документ на основании другого объекта /// в 1с 8.3, 8.2 // создадим документ продажа на основании поступления // скопировав из поступления табличную часть // в модуле документа ПродажаЕды я определил процедуру // ОбработкаЗаполнения, которая обрабатывает ситуации // когда мы заполняем один элемент на основании // данных другого (см. в базе для скачивания) ПродажаНаОсновании = Документы.ПродажаЕды.СоздатьДокумент(); ПродажаНаОсновании.Дата = ТекущаяДата(); ПродажаНаОсновании.Комментарий = "Документ введён на основании " + Строка(Поступление.Ссылка); ПродажаНаОсновании.Заполнить(Поступление.Ссылка); ПродажаНаОсновании.Записать(РежимЗаписиДокумента.Проведение); /// Как пометить на удаление документ в 1с 8.3, 8.2 ПродажаНаОсновании.УстановитьПометкуУдаления(Истина); // метод Записать вызывать не нужно КонецПроцедуры /// Как найти и изменить программно движения документа /// по регистрам в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиИИзменитьДвиженияДокументаНаСервере() // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // наша задача: найти записи по регистру "ЗапасЕды" // изменить их (например, удвоим количество) // и записать вместо старых // используем объектную технику получения движений, // ведь мы будем их изменять Поступление = ПоступлениеСсылка.ПолучитьОбъект(); // получим набор записей этого документа в регистр ЗапасыЕды НаборЗаписей = Поступление.Движения.ЗапасыЕды; // прочитаем записи из базы данных НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // выведем старые значения Сообщить( Строка(Запись.ВидДвижения) + " " + Запись.Еда + " " + Запись.Количество ); // изменим запись, удвоив количество Запись.Количество = Запись.Количество * 2; КонецЦикла; // добавим новую запись НоваяЗапись = НаборЗаписей.ДобавитьПриход(); НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию("Основной"); НоваяЗапись.Еда = Справочники.Еда.НайтиПоНаименованию("Банан"); НоваяЗапись.Количество = 3; НоваяЗапись.Период = ТекущаяДата(); // разом запишем набор записей НаборЗаписей.Записать( Истина // удалим старые движения и запишем вместо них новые ); // теперь движения документа № ВМБП-000002 отличаются от тех, // что были записаны документом при проведении // чтобы вернуть их к начальному виду - нужно // перепровести документ КонецПроцедуры /// Как прочитать движения документа по регистрам запросом /// в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьДвиженияДокументаЗапросомНаСервере() // этот приём используется, если не требуется изменять // найденные записи // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // прочитаем записи по регистру "ЗапасЕды" запросом Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕды.НомерСтроки, | ЗапасыЕды.ВидДвижения, | ЗапасыЕды.Еда, | ЗапасыЕды.Количество |ИЗ | РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды |ГДЕ | ЗапасыЕды.Регистратор = &ВыбРегистратор | |УПОРЯДОЧИТЬ ПО | ЗапасыЕды.НомерСтроки"; Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( "#" + ВыборкаДетальныеЗаписи.НомерСтроки + " " + ВыборкаДетальныеЗаписи.ВидДвижения + " " + ВыборкаДетальныеЗаписи.Еда + " " + ВыборкаДетальныеЗаписи.Количество ); КонецЦикла; КонецПроцедуры /// Как изменить проведенный документ, не меняя его /// движений (проводок) в 1с 8.3, 8.2 &НаСервере Процедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере() // бывает так, что есть проведенный документ // в уже закрытом периоде и нужно изменить // некоторое поле документа, но так чтобы // не поменялись проводки документа ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000005", '20141231'); // Изменим количество в табличной части этого документа // на 1, но чтобы проводки (движения) остались прежними Поступление = ПоступлениеСсылка.ПолучитьОбъект(); Для Каждого Строка Из Поступление.Еда Цикл Строка.Количество = 1; КонецЦикла; // если сейчас просто записать документ // изменятся его проводки, ведь он уже проведён // но если установить флаг Загрузка Поступление.ОбменДанными.Загрузка = Истина; // то можно записать проведенный документ // без повторного проведения Поступление.Записать(); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьПродажуПоНомеру(Номер, Интервал) Возврат Документы.ПродажаЕды.НайтиПоНомеру( Номер, Интервал ); КонецФункции /// Как открыть форму существующего документа /// по ссылке в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСуществующегоДокумента(Команда) СсылкаНаДокумент = ПолучитьПродажуПоНомеру("ВМБП-000006", '20141231'); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент); ОткрытьФорму( "Документ.ПродажаЕды.ФормаОбъекта", // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму выбора документа и /// отследить её закрытие в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораДокумента(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораДокумента", ЭтотОбъект); ОткрытьФорму( "Документ.ПродажаЕды.ФормаВыбора",,,,,,ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораДокумента(Результат, Параметры) Экспорт Если Результат <> Неопределено Тогда Сообщить("Был выбран документ " + Результат); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция НайтиПоставщикаПоИмени(Имя) Возврат Справочники.Поставщики.НайтиПоНаименованию( Имя ); КонецФункции /// Как открыть форму списка (журнал) документов и /// с отбором по реквизиту в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСпискаДокументовСОтбором(Команда) // откроем список поступлений, оставив // только те, что от поставщика ООО "Поле" ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поставщик", НайтиПоставщикаПоИмени("ООО ""Поле""")); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ОткрытьФорму( "Документ.ПоступлениеЕды.ФормаСписка", ПараметрыФормы ); КонецПроцедуры /// Как открыть форму только что созданного, но ещё /// не записанного документа в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда) // получаем форму нового документа ФормаНовогоДокумента = ПолучитьФорму( "Документ.ПоступлениеЕды.ФормаОбъекта",,, Истина); // делаем копию её данных (так как напрямую их менять // нельзя) КопияДанныхФормы = ФормаНовогоДокумента.Объект; // заполняем эти данные на сервере ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы); // копируем заполненные данные в исходную форму КопироватьДанныеФормы(КопияДанныхФормы, ФормаНовогоДокумента.Объект); // показываем форму нового заполненного // документа пользователю ФормаНовогоДокумента.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы) // преобразуем данные формы в документ Поступление = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеЕды")); // заполним только табличную часть НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; // преобразуем документа обратно в данные формы ЗначениеВДанныеФормы(Поступление, ДанныеФормы); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Часто возникаю ситуации, что при работе в программе 1С не можем найти нужный документ, справочник, отчет, либо обработку. Причинами может быть обновление программы, после чего изменился интерфейс и расположение меню, либо перешли с другой версии программы, открыли программу первый раз.
Ниже рассмотрим способ как найти любые объекты в программах 1С 8.2 и 8.3.
Версия 1С:Предриятие 8.3:
1. Запускаем 1С.
2. Выделяем нужную базу.
3. Открываем базу 1С.
4. Нажимаем главное Меню, дальше Все функции.
5. В окне все функции видим все объекты, которые есть в программе:
- константы;
- справочники
- документы;
- журналы документов;
- отчеты;
- обработки;
- планы видов характеристик;
- планы счетов;
- планы видов расчета;
- регистры сведений;
- регистры накопления;
- регистры бухгалтерии;
- и другие.
6. Допустим нам нужен документ “Ввод остатков”. Нажимаем на плюс “+” рядом Документы, после чего раскрывается список документов. Прокручиваем вниз и находим нужный документ. Также название объекта можно набрать в клавиатуре на русском раскладке. Для справочников и других объектов, проделываем те же шаги.
7. После открытия, работаем нужным документом. В нашем случае, это документ Ввод остатков”.
Версия 1С:Предриятие 8.2
1. Запускаем 1С и выбираем нужную базу.
2. Если есть пользователь, выбираем и нажимаем ОК.
3. Нажимаем Операции. Ниже видим, что есть список объектов, в которых мы можем найти нужный нам объект. Допустим, мы хотим найти справочник “Статьи затрат”. Для этого нажимаем Операции – Справочники.
4. В списке находим “Статьи затрат” и нажимаем ОК.
5. Продолжаем работу открытым справочником.
Источник изображения.
Понравилась статья? Ставьте лайк и подписывайтесь на канал Советы бухгалтеру.
В группах Вконтакте, Одноклассники можете задавать ваши вопросы.
Как выбрать и упорядочить документы за период в 1С
&НаСервере
Процедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере()
// найдём все документы поступления за 2020 год
// упорядочив их по возрастанию даты
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР";
Запрос.УстановитьПараметр("НачДата", '20200101');
Запрос.УстановитьПараметр("КонДата", '20201231');
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Сообщить(ВыборкаДокументов.Ссылка);
КонецЦикла;
КонецПроцедуры
Как найти документ по номеру в 1С
&НаСервере
Процедура КакНайтиДокументПоНомеруНаСервере()
// найдём поступление № А-000000001 за 2020 год
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата И
| Номер = &ВыбНомер";
Запрос.УстановитьПараметр("НачДата", '20200101');
Запрос.УстановитьПараметр("КонДата", '20201231');
Запрос.УстановитьПараметр("ВыбНомер", "А-000000001");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Если ВыборкаДокументов.Следующий() Тогда
Сообщить(ВыборкаДокументов.Ссылка);
Иначе
Сообщить("Документ с таким номером не существует!");
КонецЕсли;
КонецПроцедуры
Как найти документы по реквизиту в 1С
&НаСервере
Процедура КакНайтиДокументПоРеквизитуНаСервере()
// найдём все документы поступления
// от поставщика ООО "Ромашка"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка,
| Поставщик
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
|ГДЕ
| Поставщик = &ВыбПоставщик
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР";
Запрос.УстановитьПараметр(
"ВыбПоставщик",
Справочники.Поставщики.НайтиПоНаименованию("ООО ""Ромашка""")
);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Сообщить(
Строка(ВыборкаДокументов.Ссылка) + " " +
ВыборкаДокументов.Поставщик
);
КонецЦикла;
КонецПроцедуры
Как выбрать все документы, которые не проведены и не помечены на удаление в 1С
&НаСервере
Процедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере()
// найдём не проведенные и не помеченные на удаление
// документы поступления товаров
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка,
| Проведен,
| ПометкаУдаления
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
|ГДЕ
| Проведен = ЛОЖЬ И
| ПометкаУдаления = ЛОЖЬ
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Сообщить(
Строка(ВыборкаДокументов.Ссылка) + " " +
ВыборкаДокументов.Проведен + " " +
ВыборкаДокументов.ПометкаУдаления
);
КонецЦикла;
КонецПроцедуры
Как найти подчиненные документы в 1С
&НаСервере
Процедура КакНайтиПодчиненныеДокументыНаСервере()
// Рассмотрим работу с подчиненными (связанными) документами
// на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный.
// Документ СчетФактураПолученный вводится на основании документа
// ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной
// по отношению к поступлению.
// Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном
// документе через табличную часть ДокументыОснования.
// Почему через табличную часть? Потому что один документ может зависеть
// (быть подчиненным) сразу от нескольких родителей (оснований).
// Пример №1.
// У нас есть ссылка на поступление товаров и услуг. Требуется найти
// счёт-фактуры, которые были введены на основании этого поступления.
// В дереве подчиненности эти фактуры будут подчинены (зависимы) от
// документа поступления.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.СчетФактураПолученный.ДокументыОснования КАК
| СчетФактураПолученныйДокументыОснования
|ГДЕ
| СчетФактураПолученныйДокументыОснования.ДокументОснование =
| &ВыбПоступление";
Запрос.УстановитьПараметр("ВыбПоступление",
Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("А-00000005", '20200101')
);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка;
Сообщить(ПодчиненнаяФактура);
КонецЦикла;
// Пример №2.
// У нас есть ссылка на счет-фактуру полученную. Требуется найти,
// документы, на основании которых она была введена (родителей).
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументОснование
|ИЗ
| Документ.СчетФактураПолученный.ДокументыОснования КАК
| СчетФактураПолученныйДокументыОснования
|ГДЕ
| СчетФактураПолученныйДокументыОснования.Ссылка =
| &ВыбСчетФактура";
Запрос.УстановитьПараметр("ВыбСчетФактура",
Документы.СчетФактураПолученный.НайтиПоНомеру("А-00000002", '20200101')
);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование;
Сообщить(РодительФактуры);
КонецЦикла;
КонецПроцедуры
Как перебрать (перечислить) строки табличной части документа в 1С
&НаСервере
Процедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере()
// У документа Поступление есть табличная часть 'Товары'.
// У этой табличной части есть колонки: Номенклатура, Количество,
// Сумма.
ПоступлениеСсылка =
Документы.ПоступлениеТоваров.НайтиПоНомеру(
"А-00000001", '20201231');
// перечислим строки табличной части этого документа
// при помощи объектной техники
Для Каждого Строка Из ПоступлениеСсылка.Товары Цикл
Сообщить(
Строка.Номенклатура.Наименование + " " +
Строка.Количество + " шт. " +
Строка.Сумма + " руб."
);
КонецЦикла;
// при помощи запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваровТовары.Номенклатура,
| ПоступлениеТоваровТовары.Количество,
| ПоступлениеТоваровТовары.Сумма
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
|ГДЕ
| ПоступлениеТоваровТовары.Ссылка = &ВыбПоступление";
Запрос.УстановитьПараметр("ВыбПоступление", ПоступлениеСсылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(
ВыборкаДетальныеЗаписи.Номенклатура.Наименование + " " +
ВыборкаДетальныеЗаписи.Количество + " шт. " +
ВыборкаДетальныеЗаписи.Сумма + " руб."
);
КонецЦикла;
КонецПроцедуры
Как создать документ в 1С
// создадим новый документ поступление
Поступление = Документы.ПоступлениеТоваров.СоздатьДокумент();
// заполним шапку документа
Поступление.Дата = ТекущаяДата();
Поступление.Поставщик =
Справочники.Поставщики.НайтиПоНаименованию(
"ООО ""Ромашка"""
);
Поступление.Склад =
Справочники.Склады.НайтиПоНаименованию(
"Основной склад"
);
// заполним табличную часть
НоваяСтрока = Поступление.Товары.Добавить();
НоваяСтрока.Номенклатура =
Справочники.Номенклатура.НайтиПоНаименованию(
"Сапоги"
);
НоваяСтрока.Количество = 2;
НоваяСтрока.Сумма = 3000;
Как записать документ в 1С
Поступление.Записать(РежимЗаписиДокумента.Запись);
Как провести документ в 1С
Поступление.Записать(РежимЗаписиДокумента.Проведение);
Как отменить проведение документа в 1С
Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Как внести изменения в документ по ссылке в 1С
// зачастую у нас есть только ссылка на документ
// и чтобы по ней получить сам объект документа
// для изменения нужно вызывать метод ПолучитьОбъект
// найдём документ под номером А-000000001
// для лаконичности примера воспользуемся не запросом,
// а объектной техникой
СсылкаДокумент = Документы.РеализацияТоваров.НайтиПоНомеру(
"А-000000001",
'20201231' // поиск среди документов 2020 года
);
// нам вернули не сам документ, а ссылку (указатель) на него
// проверим - нашёлся ли вообще документ
Если СсылкаДокумент.Пустая() Тогда
Сообщить("Документ не найден.");
Иначе
// получим сам документ по ссылке
СсылкаДокументОбъект = СсылкаДокумент.ПолучитьОбъект();
// вот его уже можно изменять и записывать
СсылкаДокументОбъект .Клиент = Справочники.Клиенты.НайтиПоНаименованию("Ромашка");
СсылкаДокументОбъект.Записать();
КонецЕсли;
Как получить пустую ссылку типа документ в 1С
ДокументСсылкаПустая = Документы.РеализацияТоваров.ПустаяСсылка();
Если ДокументСсылкаПустая.Пустая() Тогда
Сообщить("Ссылка действительно пустая.");
КонецЕсли;
Как скопировать существующий документ в 1С
// скопируем документ и запишем
// как новый документ от сегодняшнего числа
КопияДокументаОбъект = КакойтоДокументСсылка.Скопировать();
КопияДокументаОбъект.Дата = ТекущаяДата();
КопияДокументаОбъект.Комментарий = "Копия документа " + Строка(КакойтоДокументСсылка);
// запишем и проведём документ
КопияДокументаОбъект.Записать(РежимЗаписиДокумента.Проведение);
Как заблокировать документ перед изменениями в 1С
// выполним блокировку документа
// от изменения другими режимами или пользователями
ДокументОбъект = СсылкаДокумент.ПолучитьОбъект();
Если Не ДокументОбъект .Заблокирован() Тогда
ДокументОбъект .Заблокировать();
// тут идёт какой-то долгий алгоритм
// в результате которого мы меняем
// заблокированный элемент
...
ДокументОбъект.Записать();
// и только потом освобождаем его
// для других режимов и пользователей
ДокументОбъект.Разблокировать();
КонецЕсли;
Как создать новый документ на основании другого объекта в 1С
// создадим документ на основании поступления и заполним
// замечание: в модуле объекта документа РеализацияТоваров дополнительно надо создать обработчик ОбработкаЗаполнения(), в который надо вписать код заполнения табличной части
НоваяРеализацияОбъект = Документы.РеализацияТоваров.СоздатьДокумент();
НоваяРеализацияОбъект.Дата = ТекущаяДата();
НоваяРеализацияОбъект.Комментарий = "Документ введён на основании " + Строка(ДокументСсылкаПоступление1);
НоваяРеализацияОбъект.Заполнить(ДокументСсылкаПоступление1); //тут будет вызвана "ОбработкаЗаполнения"
НоваяРеализацияОбъект.Записать(РежимЗаписиДокумента.Проведение);
Как пометить на удаление документ в 1С
ДокументОбъект.УстановитьПометкуУдаления(Истина);
// метод Записать вызывать не нужно
Как найти и изменить программно движения документа в 1С
&НаСервере
Процедура КакНайтиИИзменитьДвиженияДокументаНаСервере()
// предположим у нас есть ссылка на проведенный
// документ поступления № А-000000001
ПоступлениеСсылка = Документы.ПоступлениеТоваров.НайтиПоНомеру("А-000000001", '20201231');
// мы знаем, что этот документ делает записи по регистру накопления "ТоварыНаСкладах"
// изменим записи по регистру "ТоварыНаСкладах"
ПоступлениеОбъект = ПоступлениеСсылка.ПолучитьОбъект();
// получим набор записей этого документа в регистр ТоварыНаСкладах
НаборЗаписей = ПоступлениеОбъект.Движения.ТоварыНаСкладах;
// прочитаем записи из базы данных
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
// выведем старые значения
Сообщить(
Строка(Запись.ВидДвижения) + " " +
Запись.Номенклатура + " " + Запись.Количество
);
// изменим запись, удвоив количество
Запись.Количество = Запись.Количество * 2;
КонецЦикла;
// добавим новую запись
НоваяЗапись = НаборЗаписей.ДобавитьПриход();
НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад");
НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Сапоги");
НоваяЗапись.Количество = 3;
НоваяЗапись.Период = ТекущаяДата();
//запишем набор записей
НаборЗаписей.Записать(Истина); // удалим старые движения и запишем вместо них новые
//внимание! после стандартной перезаписи документа наши изменения вновь будут перезаписаны типовым алгоритмом (если он есть в модуле объекта).
КонецПроцедуры
Как прочитать движения документа по регистрам запросом в 1С
&НаСервере
Процедура КакПрочитатьДвиженияДокументаЗапросомНаСервере()
// этот приём используется, если не требуется изменять
// найденные записи
// предположим у нас есть ссылка на проведенный
// документ поступления товаров № А-0000000001
ПоступлениеСсылка =
Документы.ПоступлениеТоваров.НайтиПоНомеру(
"А-0000000001", '20201231');
// прочитаем записи по регистру "ТоварыНаСкладах" запросом
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладах.НомерСтроки,
| ТоварыНаСкладах.ВидДвижения,
| ТоварыНаСкладах.Номенклатура,
| ТоварыНаСкладах.Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|ГДЕ
| ТоварыНаСкладах.Регистратор = &ВыбРегистратор
|
|УПОРЯДОЧИТЬ ПО
| ТоварыНаСкладах.НомерСтроки";
Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка .Следующий() Цикл
Сообщить(
"#" + Выборка.НомерСтроки +
" " + Выборка.ВидДвижения +
" " + Выборка.Номенклатура+
" " + Выборка.Количество
);
КонецЦикла;
КонецПроцедуры
Как изменить проведенный документ, не меняя его в 1С
&НаСервере
Процедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере()
// бывает так, что есть проведенный документ
// в уже закрытом периоде и нужно изменить
// некоторое поле документа, но так чтобы
// не поменялись проводки документа
ПоступлениеСсылка =
Документы.ПоступлениеТоваров.НайтиПоНомеру(
"А-0000000001", '20201231');
// Изменим количество в табличной части этого документа
// на 1, но чтобы проводки (движения) остались прежними
Поступление = ПоступлениеСсылка.ПолучитьОбъект();
Для Каждого Строка Из Поступление.Товары Цикл
Строка.Количество = 1;
КонецЦикла;
// если сейчас просто записать документ
// изменятся его проводки, ведь он уже проведён
// но если установить флаг Загрузка
Поступление.ОбменДанными.Загрузка = Истина;
// то можно записать проведенный документ
// без повторного проведения
Поступление.Записать();
КонецПроцедуры
Как найти документ по номеру в 1С
&НаСервереБезКонтекста
Функция ПолучитьДокументПоНомеру(Номер, ДатаИнтервала)
Возврат Документы.РеализацияТоваров.НайтиПоНомеру(Номер, ДатаИнтервала);
КонецФункции
Как открыть форму существующего документа в 1С
&НаКлиенте
Процедура КакОткрытьФормуСуществующегоДокумента(Команда)
СсылкаНаДокумент = Документы.РеализацияТоваров.НайтиПоНомеру("А-000000002", '20201231');
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму(
"Документ.РеализацияТоваров.ФормаОбъекта", // имя формы
ПараметрыФормы // параметры для формы
);
КонецПроцедуры
Как открыть форму выбора документа и отследить её закрытие в 1С
&НаКлиенте
Процедура КакОткрытьФормуВыбораДокумента(Команда)
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораДокумента",
ЭтотОбъект);
ОткрытьФорму(
"Документ.РеализацияТоваров.ФормаВыбора",,,,,,ОповещениеОЗакрытии
);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораДокумента(Результат, Параметры) Экспорт
Если Результат <> Неопределено Тогда
Сообщить("Был выбран документ " + Результат);
КонецЕсли;
КонецПроцедуры
Как открыть форму списка (журнал) документов с отбором по реквизиту в 1С
&НаКлиенте
Процедура КакОткрытьФормуСпискаДокументовСОтбором(Команда)
// откроем список поступлений, оставив
// только те, что от поставщика ООО "Ромашка"
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Поставщик",
НайтиПоставщикаПоИмени("ООО ""Ромашка"""));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ОткрытьФорму(
"Документ.ПоступлениеТоваров.ФормаСписка",
ПараметрыФормы
);
КонецПроцедуры
Как открыть форму только что созданного, но ещё не записанного документа в 1С
&НаКлиенте
Процедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда)
// получаем форму нового документа
ФормаНовогоДокумента = ПолучитьФорму(
"Документ.ПоступлениеТоваров.ФормаОбъекта",,, Истина);
// делаем копию её данных (так как напрямую их менять
// нельзя)
КопияДанныхФормы = ФормаНовогоДокумента.Объект;
// заполняем эти данные на сервере
ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы);
// копируем заполненные данные в исходную форму
КопироватьДанныеФормы(КопияДанныхФормы,
ФормаНовогоДокумента.Объект);
// показываем форму нового заполненного
// документа пользователю
ФормаНовогоДокумента.Открыть();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы)
// преобразуем данные формы в документ
Поступление = ДанныеФормыВЗначение(ДанныеФормы,
Тип("ДокументОбъект.ПоступлениеТоваров"));
// заполним только табличную часть
НоваяСтрока = Поступление.Товары.Добавить();
НоваяСтрока.Номенклатура =
Справочники.Номенклатура.НайтиПоНаименованию(
"Сапоги"
);
НоваяСтрока.Количество = 2;
НоваяСтрока.Сумма = 3000;
// преобразуем документа обратно в данные формы
ЗначениеВДанныеФормы(Поступление, ДанныеФормы);
КонецПроцедуры
You have no rights to post comments
Первый способ. Поиск в форме списка документов
Всего в программе есть три списка документов разделенных по типам: Внутренние Документы, Входящие Документы, Исходящие Документы. Данный способ подходит для случая, когда вы наверняка знаете к какому типу документов относится искомый документ. По умолчанию все три списка выглядят одинаково. В каждом из них можно использовать любой из следующих вариантов.
a. Быстрые отборы
В шапке форме списка есть группа быстрых отборов. Можно делать отборы только по одному реквизиту или по нескольким:
Поиск будет происходить в выбранном реквизите по точному совпадению.
Также на форму можно вывести дополнительные отборы через “Еще” -”Настройки”-”Изменить форму” установив или сняв галочками виды отборов:
Не забывайте снимать отборы (нажать на крестик в поле быстрого поиска), иначе ваш выбор сохранится при повторном открытии формы и вы увидите только отобранные ранее документы.
б. Поле поиска
Поиск происходит только по полям выведенным в списке (которые мы видим на экране, а не по всем реквизитам документа) и поиск происходит по части строки. Найденные вхождения выделяются зеленым цветом:
При наличие большого количества документов в базе для ускорения времени поиска рекомендуется сделать также быстрый отбор по периоду. Например, текущий год.
в. Расширенный поиск
При необходимости искать по конкретному реквизиту который мы видим в списке, можно воспользоваться расширенным поиском:
В поле “Где искать” можно выбрать только те реквизиты, которые выведены на форму (которые мы видим на экране).
В отличие от поиска через быстрые отборы или поле поиска мы можем выбрать как искать: по началу строки, по части строки, по точному совпадению.
Чтобы снова увидеть все документы, нужно нажать на крестик в текущем отборе, который появился над списком документов.
г. Настройка списка
Если вы часто пользуетесь какими-то отборами через поле поиска или расширенный поиск, то можно сохранить их через “Еще”- “Настройки” – “Настроить список”
На вкладке “Отбор” можно выбрать любой реквизит документа из левой колонки “Доступные поля” и кликнуть по нему два раза (1), выбрать вид сравнения(2) и с чем сравнивать (3), после этого сохранить настройки нажав “Завершить редактирование”.
В шапке формы появятся наши персональные настройки:
Теперь можно менять значения в сохраненных настройках. Чтобы снова увидеть весь список без отборов нужно снять галочки возле названия реквизита, по которому происходит поиск.
Чтобы совсем удалить с формы эти настройки требуется перейти повторно в настройки списка на вкладку отборы и нажать “Удалить”.
д. Показывать помеченные на удаление
В случае, если документ был помечен на удаление или была нажата кнопка “Delete”, он пропадает из общего списка документов. Если администратор вашей базы или фоновое задание, которое выполняется по расписанию еще не успели удалить все помеченные на удаление объекты, то восстановить такой документ можно, что через “Еще”-”Настройки”- “Показывать удаленные”. Тогда документ появится в списке в зачеркнутом виде:
Останется только нажать “Еще “- “Документы”-“Пометить на удаление/Снять пометку”
e. Настройка просмотра
В меню “Еще”- “Просмотр” можно выбрать варианты просмотра документов, при котором в левой колонке появляется список того, по чему можно сгруппировать документы:
При этом если в левой колонке выделить один из элементов, то в списке документов происходит отбор по выделенному элементу:
Второй способ. Обработка “Поиск документов и файлов”
Данная обработка находится в разделе “Документы и файлы”- “Сервис”. И подходит для поиска по всем трем типам документов, а также по всем реквизитам документов. Требуется выбрать область поиска (1), например, по всем типам документов или только по одному, что искать(2) по одному или нескольким реквизитам и запустить поиск (3).
В примере ниже поиск происходит по всем типам документов, у которых в реквизите “Содержание” есть текст “строит”, чтобы найти все слова “строительный”, “строитель”, “перестроить” и т.п.
Результат будет выглядеть в виде отдельных списков из найденных документов:
Третий способ. Полнотекстовый поиск
Полнотекстовый поиск находится в “Документы и файлы”- “Сервис” или по значку лупы справа наверху возле имени пользователя, под которым вы вошли в программу:
Третий способ производит поиск по всей информации, которая есть в информационной базе. Это может быть как значение поля карточки документа, так и название этого реквизита или папки в котором он находится или любой другой объект базы. Также поиск происходит по содержимому прикрепленного к карточке файла и всех его версий.
Четвертый способ. Список “Мои документы”
Cписок “Мои документы” находится в “Документы и файлы” – “Мои документы” и на начальной странице, если у вас там выведен виджет “Мои документы” на форме “Текущие дела”.
В этом списке находятся документы, которые относятся к вам и по которым могут требоваться какие-то действия:
-
все документы, по которым вам направлена задача. После выполнения задачи документы перестанут отображаться в списке;
-
все документы, по которым вы направили задачу другому сотруднику. После выполнения задачи документы также перестанут отображаться в списке;
-
входящие документы, созданные вами. Документы исчезнут из списка после регистрации;
-
исходящие документы, созданные вами. Документы исчезнут из списка после регистрации и отправки;
-
внутренние документы, созданные вами. Документы исчезнут из списка после регистрации и исполнения;
-
документы, за которые вы назначены ответственным. Эти документы можно исключить из списка только вручную.
Подпишитесь на дайджест!
Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.
Пятый способ. Отчеты
В программе предусмотрено большое количество настроенных отчетов. Отчеты по документам находятся в “Документы и файлы” – “Отчеты”. С помощью этих отчетов можно найти документ по разным критериям исходя из названия отчета.
Например, отчет “Неподписанные внутренние документы”:
Кликнув в отчете на найденный документ откроется карточка этого документа.
Шестой способ. По контрагенту
Когда необходимо посмотреть все документы по определенному контрагенту, можно воспользоваться справочником “Контрагенты”, который находится в “Документы и файлы” – “Контрагенты”. В карточке контрагента есть гиперссылка на все документы, к нему относящиеся.
Седьмой способ. Категории (доступен только в версии КОРП и ДГУ)
При включенной настройки Категорий (настройка на уровне всей программы) в документах появляется вкладка “Категории”.
Категории – это дополнительная классификация или теги документов. Категории можно устанавливать вручную или автоматически по настроенным критериям. После этого в “Документы и файлы” – “Категории” можно подобрав категории сразу найти все подходящие по отбору документы.
Восьмой способ. Поиск по штрихкоду (доступен только в версии КОРП и ДГУ)
В КОРП /ДГУ версии каждому документу по умолчанию назначается штрихкод. Штрихкод можно визуально установить программно в прикрепленном файле или распечатать на наклейке при наличии специального оборудования для печати наклеек. После этого при подключенном сканере шрихкодов можно отсканировать штрихкод и в программе откроется нужная карточка этого документа.
Если документ приходит в нашу организацию со своим штрихкодом, то, чтобы избежать случайностей при сканировании штрихкодов, его можно также указать в программе, как внешний. После этого поиск будет доступен и по нему.
Поиск можно производить по номеру штрихкода без подключенного сканера штрихкодов. Такой поиск вызывается сочетанием клавиш Ctrl+Shift+I.
Девятый способ. Избранное и История
Список документов (и других ссылок в программе), которые были добавлены в избранное или список последних просмотренных документов, доступны по соответствующим значкам справа наверху возле имени текущего пользователя.
Избранное:
История (Список последних):
Также эти списки можно вывести на начальной странице с помощью Настройки – Настройки начальной страницы:
Чтобы добавить документ в избранное нужно нажать на значок звездочки возле наименования документа:
Десятый способ. Как найти физическое местоположение документа
а. Журнал передачи
Запись журнала передачи можно внести (по кнопке “создать”) на контактное лицо Контрагента или на нашего сотрудника. В этом же списке можно видеть всю историю передач по этому документу.
Проводить сводный анализ переданных документов можно по общему списку журнала передачи (“Документы и файлы” – “Журнал передачи”)
или по отчетам в разделе “Документы и файлы” – “Отчеты” – “По всем документам”:
б. Учет документов по местам хранения
При включенной настройки учета по местам хранения в видах документа можно вести учет по местам хранения и ответственным лицам за хранение. В месте хранения можно указывать заранее введенные места из справочника или в виде произвольной строки.