Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Отключить поиск в колонке ТЧ документа

При сканировании штрихкода часто бывает так, что вместо срабатывания внешнего события происходит поиск в столбце ().
В нижней части ТЧ возникает окошко для ввода строки.
Можно ли отключить поиск в этом столбце?
Ответ: Не знаю как.
Сканер USB. Суффикс #13
Может переделать суффикс на #19?
Вопрос: Поиск по документам

Помогите сделать поиск по документам

вот мой код, но почему-то не работает, P.s. я новичок в 1с:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Перем Твр_Вызовы;
//*******************************************
Процедура ПриВыбореРежима() 
Если режим = 1 тогда
Форма.naim.Доступность(1); 
Форма.флТочноеСовпадение.Доступность(1); 
 
Иначе
Форма.naim.Доступность(0);
Форма.флТочноеСовпадение.Доступность(0); 
КонецЕсли; 
КонецПроцедуры
//*************************************** 
Процедура ПриОткрытии()
режим = 1;
ПриВыбореРежима(); 
Форма.кнопкаВыполнить.Доступность(1);
Форма.кнопкаВыбрать.Доступность(1); 
КонецПроцедуры
//*******************************************
Процедура НайтиПоФамилии()
Таблица.УдалитьСтроки(); 
Твр_Вызовы.ВыбратьЭлементы(0);
Пока Твр_Вызовы.ПолучитьЭлемент()=1  Цикл 
Если Твр_Вызовы.ЭтоГруппа()=1  Тогда
Продолжить; 
КонецЕсли;
ФИО_вызывавшего = Твр_Вызовы.ФИО_вызывавшего; 
Если Найти(СокрЛП(ФИО_вызывавшего), СокрЛП(naim))>0 Тогда 
//если поиск только на точное совпадение 
Если ((флТочноеСовпадение=1)
И (СокрЛП(ФИО_вызывавшего)=СокрЛП(naim))) Тогда 
Таблица.НоваяСтрока(); 
Таблица.Название = ФИО_вызывавшего; 
Продолжить;
ИначеЕсли ((флТочноеСовпадение=1)
И (СокрЛП (ФИО_вызывавшего)=СокрЛП (naim))) Тогда
Продолжить;
КонецЕсли;
Таблица.НоваяСтрока();
Таблица.Название = ФИО_вызывавшего;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//*******************************************
пароль 1234
Вот вся прога, помогите пожалуйста кому не сложно, P.s отчет тоже не работает
Ответ: блин чувак ты так алогично пишешь крод, что я его не понимаю.
он должен быть понятен интуитивно, просто пробежался мельком, а у тебя все точно педантично кажная переменная обозвата, запитые расставлены, как фашисты под москвой, но смысл всего действа за сим ускользает ....
Вопрос: Поиск в документах по реквизиту

Здравствуйте. Такая проблема - нужно реквизит из одного документа приравнять другому, причём нужно найти главный реквизит, по которому происходит проверка. Есть документ - Акт снятия, и документ - акт ТО. В первом документе выбирается номер аккумулятора и указывается его ресурс, во втором документе требуется что-бы при выборе номера батареи ресурс искался в первом документе.Мой код почему-то не работает.

1C
1
2
3
СПР = Документы.АктСнятия;
Элемент = СПР.НайтиПоРеквизиту("Ресурс",Объект.НомерАКБ);    
Объект.Ресурс = Элемент.Ресурс;
Ответ: avatar1870, не получится может, только при количестве документов в 5к к примеру, будут интересные эффекты.
Вопрос: Долго выполняется поиск связанных документов

Здравствуйте. Необходимо перебрать документы, созданные на основании текущего и вытащить из них некоторые значения.
Все хорошо работает, но черезвычайно долго ищет связанные документы. Есть возможно как-то ускорить выполнение данного фрагмента кода? может переписать на запросы? но как должен выглядеть запрос?

        СвязанныеДокументы  = КритерииОтбора.СвязанныеДокументы.Найти(Объект.Ссылка);
	Для Каждого ТекСвязанныйДокумент из СвязанныеДокументы Цикл
		Если ТипЗнч(ТекСвязанныйДокумент) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
			// подразумеваем, что по одному документу реализации соответствует один документ ПКО
			КассаНаименование = строка(ТекСвязанныйДокумент.Касса);
		        Прервать;
		КонецЕсли;	
	КонецЦикла;
Ответ: Вы не знаете как выглядят запросы? Тут аналогично выбору элемента из справочника...
Вопрос: v7: Поиск предыдущего документа

Добрый день, коллеги.
1С 7.7.
Нужно найти предыдущий документ по автомобилю и взять из него значение спидометра, зная ссылку на текущий док и автомобиль.
Использую такой код:

Доки = СоздатьОбъект("Документ.ПЛАвтобуса");
Доки.ОбратныйПорядок(1);
Доки.ВыбратьДокументы();
НайденТекущийДокумент = 0;
Пока Доки.ПолучитьДокумент() = 1 Цикл
    ТекДок = Доки.ТекущийДокумент();
    Если ТекДок.Выбран() = 1 Тогда
        Если ТекДок.Проведен() = 0 Тогда
            Продолжить;
        КонецЕсли;    
        Если ТекДок.ПометкаУдаления() = 1 Тогда
            Продолжить;
        КонецЕсли;
        Если ТекДок.Автомобиль <> спрАвтомобиль Тогда
            Продолжить;
        КонецЕсли; 
        Если ТекДок = докПЛ Тогда 
            НайденТекущийДокумент = 1;
            Сообщить("Найден");
            Продолжить;
        КонецЕсли;
        Если НайденТекущийДокумент = 1 Тогда
             пвСпидометрНачальный=ТекДок.СпидометрВозвращения;    
        КонецЕсли;    
    КонецЕсли;    
КонецЦикла;    

Вот это условие Если ТекДок = докПЛ Тогда никогда не бывает истинным. Что делаю не так?
Есть ли более простой способ найти предыдущий документ? Если да, то какой?
Спасибо.
Ответ: () прямым запросом :-)
() объем меньше, следовательно, накладные расходы меньше.
Вопрос: v7: Интерактивный поиск по колонке при включенном отборе

ДД!
77 ПУБ. Справочник "Номенклатура". На форме выведена колонка Артикул. "Режим вывода списка по группа" отключен. Включен отбор по "Виду номенклатуры", например, Полуфабрикаты. При таких настройках устанавливается сортировка "по наименованию", изменить ее нельзя. Почему при этих условиях поиск по колонке артикул работает очень странно (поиск не по кнопке "Поиск", а обычным вводом артикула в колонке "Артикул"): ввожу артикул 605143, он точно есть, я его вижу, но курсор не позиционируется на строке с этим артикулом; ввожу другую комбинацию чисел, на каких-то курсор позиционируется, на каких-то нет.
Ответ: Возможно что то функция торчащая на форме в режиме динамического обновления скидывает поиск, ну это так как версия
Вопрос: Поиск последней строки

Добрый день.
Не могу разобраться, как сделать поиск в справочнике последней строки, выбрать определенную колонку например (Код), и выгрузить значение колонки в документ. И поместить в колонку (номер)
Все это действие должно происходить при нажатие кнопки.
Подскажите, заранее спасибо.
Ответ:
Процедура ДобавитьЭлементыСправочника(Кнопка)
ТабличнаяЧасть = Приплод;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НомерБирки", Ссылка);
Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());

Запрос.УстановитьПараметр("Код", Ссылка);
Запрос.УстановитьПараметр("Код", Ссылка);

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| КА_ПриплодПриплод.НомерБирки,
| КА_Скот.Код
|ИЗ
| Документ.КА_Приплод.Приплод КАК КА_ПриплодПриплод
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КА_Скот КАК КА_Скот
| ПО КА_ПриплодПриплод.НомерМатки = КА_Скот.Ссылка
| И КА_ПриплодПриплод.Скот = КА_Скот.Ссылка
| И КА_ПриплодПриплод.НомерБирки = КА_Скот.Ссылка
|ГДЕ
| КА_ПриплодПриплод.НомерБирки > &Код";
РезультатЗапрос = Запрос.Выполнить().Выгрузить();
ТабПриплод = Приплод;
Строка = ТабПриплод.Добавить();
Строка.ДатаРождения = "ТекущаяДата()";
Если Приплод <> Неопределено Тогда
Для Каждого Строка Из Приплод Цикл
ЗаполнитьЗначенияСвойств(Приплод,Строка);
Строка.ДатаРождения = ТекущаяДата();
КонецЦикла;
КонецЕсли;
Код = Ссылка;
НомерБирки = Ссылка;
Для Каждого НомерБирки Из Приплод Цикл

Если НомерБирки > Код Тогда
НомерБирки = Истина;
КонецЕсли;
Если НомерБирки <= Код Тогда
НомерБирки = Ложь;
НомерБирки.Очистить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вот работает только не правильно считает.
Пропускает номера которые уже существуют,а на новые ругается
что сделать?
Вопрос: v7: Обновить ссылочные данные на форме документа без переоткрытия формы

Есть самописный документ, у него в ТЧ есть реквизит со ссылкой на док "Заказы с сайта"(тоже самописный). На форме в табличной части рядом с колонкой "Заказы с сайта" есть текстовая колонка "Статус заказа". В Формуле колонки стоит выражение "ЗаказСсайта.Статус" и соответственно выводится статус заказа.
На форме есть больщая кнопка "Изменить статусы заказов на:", по нажатию этой кнопки перебирается табличная часть, по ссылке из колонки "Заказы с сайта" находится соответствующий документ и в нём меняется статус. НО!!! в открытой форме документа, не смотря на срабатывание формулы "ЗаказСсайта.Статус" остается старый статус. И только после переоткрытия формы документа, колонка "Статус заказа" перезаполняется новыми значениями.
Как программно обновить колонку "Статус заказа" не переоткрывая форму документа??

Такой вариант не срабатывает:
СтатусЗаказа = НовыйСтатус;
1С Ругается что "СтатусЗаказа" не доступен для записи (это текстовая колонка на форме).
Ответ:
Последняя версия

//****************************************************************************** 

 Функция ВернутьСтатусЗаявки(ЗаявкаССайта)
     Если ЗаявкаССайта.Выбран() = 1 Тогда 
         Если ЗаявкаССайта.Вид() = "ЗаявкаССайта2" Тогда
             Возврат ЗаявкаССайта.ТекущийДокумент().СтатусЗаявки;  
         КонецЕсли;   
         Если ЗаявкаССайта.Вид() = "ЗаявкаССайта" Тогда
             Возврат ЗаявкаССайта.ТекущийДокумент().СтатусЗаявки;  
         КонецЕсли;
     КонецЕсли;    
     Возврат "";
 КонецФункции    //

  
  
//******************************************************************************    

  
 Процедура ПоменятьСтатусЗаявки()
     
     НовыйСтатус = СокрЛП(СтатусЗаявкиСписок.ПолучитьЗначение(СтатусЗаявкиСписок.ТекущаяСтрока()));
     ВыбратьСтроки();
     Пока ПолучитьСтроку() = 1 Цикл
         Если ЗаявкаССайта.Выбран() = 1 Тогда 
             Если ЗаявкаССайта.СтатусЗаявки <> НовыйСтатус Тогда 
                 Если ЗаявкаССайта.Вид() = "ЗаявкаССайта2" Тогда
                     ДокЗаякиСсайта2 = СоздатьОбъект("Документ.ЗаявкаССайта2");
                     Если ДокЗаякиСсайта2.НайтиДокумент(ЗаявкаССайта) = 1 ТОгда
                         Попытка            
                             ДокЗаякиСсайта2.СтатусЗаявки = НовыйСтатус;
                             ДокЗаякиСсайта2.Записать();   
                             //СтатусЗаявки = НовыйСтатус;

                         Исключение
                             Сообщить("Не удалось изменить статус у документа: "+СокрЛП(ЗаявкаССайта));
                         КонецПопытки;
                     КонецЕсли;      
                 КонецЕсли;       
                 Если ЗаявкаССайта.Вид() = "ЗаявкаССайта" Тогда  
                     ДокЗаякиСсайта2 = СоздатьОбъект("Документ.ЗаявкаССайта");
                     Если ДокЗаякиСсайта2.НайтиДокумент(ЗаявкаССайта) = 1 ТОгда
                         Попытка            
                             ДокЗаякиСсайта2.СтатусЗаявки = НовыйСтатус;
                             ДокЗаякиСсайта2.Записать();   
                             //СтатусЗаявки = НовыйСтатус;

                         Исключение
                             Сообщить("Не удалось изменить статус у документа: "+СокрЛП(ЗаявкаССайта));
                         КонецПопытки;
                         
                     КонецЕсли;      
                 КонецЕсли;     
             КонецЕсли;
         КонецЕсли;
     КонецЦикла;    
     //Форма.Обновить();  

     //Форма.Закрыть();

 КонецПроцедуры
Вопрос: Заполнить количество в табличной части документа

Доброго времени суток.
  • Задача - заполнить табличную часть документа "Акт списания ЕГАИС" (далее - док) из данных таблицы значений (далее - ТЗ).
  • Проблема - не заполняется столбец "Количество" (остальные заполняются).
В ТЗ для колонки Количество прописано ОписаниеТипов с квалификаторами числа: длина 15, точность 3. Параметры совпадает с этими же параметрами колонки Количество дока, на отладке у значений колонки Количество в ТЗ эти параметры присутствуют.

ТЗ заполняется по данным документа "остатки ЕГАИС" (далее - док2). В док2 параметры колонки "Количество": длина 10, точность 0. Грешу на то, что количества попадают в ТЗ изначально без дробной части.

Функция, переводящая табличную часть док2 в ТЗ:
Код:
функция получитьТЧвТЗ(доп,тч)
    кч=новый квалификаторыЧисла(15,3);
    типЧ=новый описаниеТипов("число",кч);
   
    т="
    |выбрать алкогольнаяПродукция ап,
        |количество колво
        |поместить вт из &тч как тч;
    |выбрать н.номенклатура ном, вт.колво колво, вт.ап
    |из вт левое соединение
        |регистрСведений.соответствиеНоменклатурыЕГАИС н
        |по вт.ап=н.алкогольнаяПродукция где колво"+доп;
    з=новый запрос;
    м=новый МенеджерВременныхТаблиц;
    з.МенеджерВременныхТаблиц=м;
    з.Текст=т;
    з.УстановитьПараметр("тч",тч);
    в=з.Выполнить().выбрать();
   
    ы=новый таблицаЗначений;
    ы.Колонки.Добавить("ап");
    ы.Колонки.Добавить("колво", типЧ);
    ы.Колонки.добавить("ном");
   
    пока в.Следующий() цикл
        стр=ы.Добавить();
        стр.ап=в.ап;
        стр.колво=в.колво;
        стр.ном=в.ном;
    КонецЦикла;
       
    возврат ы;
КонецФункции
процедура, заполняющая табличную часть результирующего документа:
Код:
&НаСервере
Процедура создатьАктСписанияНаСервере()
    докТЧ=получитьДокТЧ();   
    тзб=получитьТЧвТЗ(">0",докТЧ);   
   
    докСписания=документы.АктСписанияЕГАИС.СоздатьДокумент();   
    докСписания.Дата=ТекущаяДата();
    докСписания.ПричинаСписания=перечисления.ПричиныСписанийЕГАИС.Недостача;
    докСписания.Магазин=справочники.Магазины.НайтиПоНаименованию(магазин);
    докСписания.склад=справочники.склады.НайтиПоНаименованию(склад);
    докСписания.организация=справочники.организации.НайтиПоНаименованию(организация);
   
    для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.Количество=стр.колво;
        с.АлкогольнаяПродукция=стр.ап;
    КонецЦикла;
   
    докСписания.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры
--- Объединение сообщений, 29 дек 2016 ---
ЗЫ: при этом в отладке вот тут
Код:
для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.Количество=стр.колво;
        с.АлкогольнаяПродукция=стр.ап;
    КонецЦикла;
Нужное количество заполняется, но без нулей в дробной части:
Ответ:
ВЗЛЕТЕЛО!!!! ааа, вот радость-то! оказалось, в документе-результате колонка с количествами называется не Количество, а КоличествоУпаковок.
Код:
 
для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.КоличествоУпаковок=стр.колво;//с.Количество - неправильно
        с.АлкогольнаяПродукция=стр.ап;
   КонецЦикла;
день прожит не зря
Вопрос: обнаружено дублирование ключевых значений в колонке ссылка

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

Код:
ВЫБРАТЬ
    ДокументИсполнение.Ссылка,
    ДокументИсполнение.Номер,
    ДокументИсполнение.Дата,
    ВложенныйЗапрос.ФИО,
    ВложенныйЗапрос.НомерАнкеты,
    ВложенныйЗапрос.Ссылка КАК Ссылка1
ИЗ
    Документ.Исполнение КАК ДокументИсполнение
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ИсполнениеСоотечественникиТаб.Ссылка КАК Ссылка,
            ИсполнениеСоотечественникиТаб.ФИО КАК ФИО,
            ИсполнениеСоотечественникиТаб.НомерАнкеты КАК НомерАнкеты
        ИЗ
            Документ.Исполнение.СоотечественникиТаб КАК ИсполнениеСоотечественникиТаб
       
        СГРУППИРОВАТЬ ПО
            ИсполнениеСоотечественникиТаб.Ссылка,
            ИсполнениеСоотечественникиТаб.ФИО,
            ИсполнениеСоотечественникиТаб.НомерАнкеты) КАК ВложенныйЗапрос
        ПО ДокументИсполнение.Ссылка = ВложенныйЗапрос.Ссылка
Вложенным запросом вытаскиваю нужные мне данные, но они задваиваются, пытаюсь группировать но не получается.
--- Объединение сообщений, 21 мар 2015 ---
Не понятно почему не могу вытащить данные из таблицы значений на прямую =(

Вложения:

  • Размер файла:
    61,1 КБ
    Просмотров:
    13
Ответ:
Здравствуйте, у меня такая же проблема. Я новичок, Вы смогли решить ее?