Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Странное поведение 1с после динамики

Стала происходить загадочная херня, есть обработка в конфе Фронт-Кассира. Добавил кнопку на форму, сохранил - все норм, сделал динамику - кнопка есть, закрыл форму и открыл снова - кнопка пропала, а сама обработка откатилась до хрен знает какой версии. Нажал Конфигурация - Закрыть конфигурацию(соответственно отключился от хранилища) и снова открыл ее - версия все еще древняя. Закрыл конфигуратор и снова открыл и все ОК. Получается если после динамики не перезапустить конфу, то при следующем сохранении в базу попадет древняя версия обработки.
Пока замечено на одной обработке, что за чудеса? и как это лечить?
Ответ: () чистка локального не помогла
Вопрос: Странное поведение COM при обмене

Всем доброе время суток !

Столкнулся со странным поведением COM.

Ситуация следующая.

На машине установлено два релиза 1С.

8.3.10.2252 32 разрядная и 8.3.11.3034 64 разрядная.

Есть база БП 3.0 (3.0.64.42).
В списке настроенных синхронизаций указана база ЗУП 3.1 находящаяся на этом же сервере 1С.

При попытке установить с ней COM соединение (Параметры подключения - Проверить подключение) получаю сообщение
Не удалось подключиться к другой программе. -2147221005(0x800401F3): Недопустимая строка с указанием класса 


Делаю отмену регистрации библиотеки comcntr.dll для релиза 8.3.10.2252

regsvr32 "C:\Program Files (x86)\1cv8\8.3.10.2252\bin\comcntr.dll"  /u

Отмена регистрации прошла успешно. 

Делаю регистрации библиотеки comcntr.dll для релиза 8.3.11.3034

regsvr32 "C:\Program Files\1cv8\8.3.11.3034\bin\comcntr.dll"

Регистрация прошла успешно.


Что еще необходимо сделать ?

Ранее в конфигурации использовался справочник НастройкиВыполненияОбмена где прописывались релизы используемые для подключения. Но сейчас он не используется.

Кто сталкивался с этой проблемой просьба подсказать.
Ответ: () + к ()
Выбор каждой из компонент, разрядности, в идеале, должен быть осознанным. Скажем сервер x64, это обязательное условие при более или менее больших БД и количестве пользователей. Но ещё зависит от наличия денюжек, ибо х54 сервер в 2 раза дороже х32.
А вот х64 клиентская часть, имхо, нафиг не нужная история. Где-то на форуме читал, что без х64 тяжко работает ERP, но не проверял.
Собственно возвращаясь к. Выбор разрядности компоненты должен основываться на разрядности ПО, что будет использовать эту компоненту. У меня, например, должны были дружить 1С и Аксапта х64. Т.е. х64 компонента выбиралась осознанно. В вашем случае, имхо, не нужна х64 клиентская часть. Попробуйте самое простое, просто правильно и ососзнанно установить нужные коппоненты:
1. В дистрибутиве х64 установить только сервер и  консоль администрирования.
2. В дистрибутиве х32 установить клиента. Тонкие и расширения по необходимости.
Можно перезагрузить сервер, но должно и так заработать.
Вопрос: Странное поведение после вызова функции

Привет Всем. Тут такая пргоблема, есть строка в коде:
ЧислоПослеОтбора = УстановитьОтборНаТаблицу(Текст,Совпадения,Объект.ДатаРождения);

где я вызываю функцию:
Совпадения - это ДанныеФормы коллекция. Остальное вроде понятно. Иток при возврате мне выдает такую ошибку:
{Справочник.Контрагенты.Форма.ФормаДобавленияФизЛица.Форма()}: Ошибка при установке значения атрибута контекста (Совпадения)
            ЧислоПослеОтбора = УстановитьОтборНаТаблицу(Текст,Совпадения, Объект.ДатаРождения);
по причине:
Нельзя изменять поле, содержащее объект данных формы
Я же ничего не изменяю в данных формы Совпадения

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

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

Объект задача.
На форме табличная часть.
Вношу туда пользователя.
По кнопке с кодом, выполняю задачу.
Если присутствует инструкция ЭтаФорма.Закрыть();
То почему то задача появляется в списке у всех пользователей.
Включая отправившего задачу.
Если инструкции ЭтаФорма.Закрыть(); нет, то задача адресуется только
адресуемому исполнителю. И появляется только у него в списке.
В чем может быть причина такого поведения?

||

Процедура ОсновныеДействияФормыЗадачаНаИсполнение(Кнопка)
Для каждого СтрИсп из Исполнители Цикл
Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
Задача.Дата = ТекущаяДата();
Задача.ВидЗадачи = ВидЗадачи;
Задача.Наименование = Наименование;
Задача.Исполнитель = СтрИсп.Исполнитель;
Задача.Модератор = Модератор;
Задача.ДатаВыполненияПланово = ДатаВыполненияПланово;
Задача.Записать();
КонецЦикла;
//ЭтаФорма.Закрыть();
КонецПроцедуры
Ответ:
А не пустая ссылка сюда попадает?
Задача.Исполнитель = СтрИсп.Исполнитель;
Вопрос: Странное поведение в обмене между базами

Имеем работавший ранее обмен между ЗУП и УПП. В данный момент опытным путем было выявлено, что обмен, запускаемый вручную в УПП и ЗУП, отрабатывает корректно на обеих сторонах. Обмен. который запускается автоматически по расписанию в ЗУП работает корректно, а в УПП корректно делает только загрузку, выгрузка же всегда создает файл на 9 кб (и рапортует, что выгрука прошла успешно), в котором отсутствует информация об объектах выгрузки. То есть концовка файла следующая:

<ДанныеПоОбмену ПланОбмена="oblОбменЗУП_УПП" Кому="ЗУП" ОтКого="УПП" НомерИсходящегоСообщения="11279" НомерВходящегоСообщения="7476" УдалитьРегистрациюИзменений="true"/>
<ДанныеПоФоновомуОбмену ПланОбмена="" Кому="0" ОтКого="0" ДобавлениеОбъектовИзФоновогоОбмена="0" КоличествоОбъектовДляФоновогоОбмена="500" ПереданоОбъектовФоновогоОбмена="0"/>
</ФайлОбмена>

Если через пару секунд после автоматического обмена запустить обмен вручную, то в созданном заново файле перед строкой </ФайлОбмена> появляется информация об объектах, которые были зареганы. Кто направит, в какую сторону копать?
Ответ: () тут уж сам, Да поможет тебе отладчик
Вопрос: Странное поведение СОМОбъекта

Имеется 1С:Предприятие 8.3 (8.3.12.1529) SQL + самописанная конфигурация.
Есть следующая задача нужно подключиться к другой базе (тоже SQL на этом же сервере) и создать в ней документ, при этом поискав в справочниках в ней и создав необходимые в случае отсутствия. Создаем подключение, не знаю только, насколько критично что стоит V82COMConnector:
СтрокаПараметров = "Srvr=127.0.0.1;Ref=kassa_sql;Usr=Кассир;Pwd=8888";
V82COMConnector = Новый COMОбъект("V83.COMConnector");
Попытка
   Возврат V82COMConnector.Connect(СтрокаПараметров);
Исключение
   Сообщить("Ошибка подключения!");
   Возврат Неопределено;
КонецПопытки;
МенеджерКонтрагенты = COMОбъект.Справочники.Контрагенты;
СправочникГруппаПоставщики = МенеджерКонтрагенты.НайтиПоНаименованию("Поставщики");
Все хорошо отрабатывает. Потом ищем справочники и тут возникает странность! Если сделать поиск по наименованию в другой базе, примерно так:
СправочникСдатчик = МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик);
то тогда у СправочникСдатчик есть метод Пустая(), а если так
СправочникСдатчик = МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик,,СправочникГруппаПоставщики);
то у СправочникСдатчик метода Пустая() нет. Пишет что метод не найден, но если переделать так то все работает.
МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик,,СправочникГруппаПоставщики).Пустая()
чем может быть причина подобного поведения?
Ответ: () А вот так получилось, спасибо.
СправочникСдатчик.Ссылка.Пустая()
Вопрос: Непонятное поведение после перехода с ЗУП 2.5 на 2.5 Корп

Доброго дня, коллеги.

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

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

ОБЪЕДИНИТЬ ВСЕ
...
ДопНачисления

ОБЪЕДИНИТЬ ВСЕ
НДФЛ

А в другом
// зуп корп

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

ОБЪЕДИНИТЬ ВСЕ
...

Ответ: хм, оказалось, что и в необновленном зуп корп такая шляпа - условие с проверкой на null. Подскажите, плз, ничего не нагуглил.. да знать бы ещё что именно гуглить =\
Вопрос: Проблема после обновления 1С:Бухгалтерия на релиз 3.0.43.50

Странная проблема... Может кто сталкивался:

Имеем:

- Конфигурация "1С:Бухгалтерия Предприятия 3.0" (3.0.42.91)(Конфигурация типовая без каких либо изменений)
- Платформа 1С:Предприятие 8.3 (8.3.7.1845)

Обновляем конфигурацию на 3.0.43.50). После этого появляется странный баг:

- Открываю справочник "Контрагенты".
- Открываю карточку Контрагента (Например "ООО АиС" или любого другого). НИЧЕГО не изменяю, нажимаю "Записать и закрыть"
- Появляется сообщение "Не удалось записать "ООО АиС (Контрагент)"

И так с любым контрагентом. Такое сообщение выскакиевает также при попытке пометить любого контрагента на удаление.

В "Журнале регистрации событий" на каждое сообщение об ошибке появляется такая запись:
---------------------
{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(998)}: Ошибка определения модифицированности объекта: {ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1096)}: Ошибка при вызове метода контекста (Выполнить)
Возврат Запрос.Выполнить().Выгрузить();
по причине:
{(2, 123)}: Поле не найдено "ОсновнойДоговорКонтрагента"
ВЫБРАТЬ Код, Родитель, КодПоОКПО, НаименованиеПолное, ЮридическоеФизическоеЛицо, ПометкаУдаления, ОсновнойБанковскийСчет, <<?>>ОсновнойДоговорКонтрагента, Комментарий, Наименование, ЭтоГруппа, ИНН, КПП ИЗ Справочник.Контрагенты КАК ТекущийОбъект

ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
----------------------

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

Что сделано:
- Тестирование и исправление не выявило никаких проблем
- Запуск утилиты chdbfl.exe также проблем не выявил.

В чем может быть проблема?
Ответ:
--- Объединение сообщений, 17 янв 2016 ---
Обход:
Режим 1С:Предприятие - Регистры сведений - Правила обмена данными.
Для строк "ПравилаУправленияНебольшойФирмойБухгалтерия30" установить типовые правила -
(Нажать кнопку "Использовать типовые правила").
Вопрос: Странное поведение дерева значений.

Недавно надо было сделать простую вещь, вывести результат запроса в дерево значений.
И вот что получилось)


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



И вот результат

Как видно элемент дерева отображается как группа
Видимо я туплю короче...
Ответ: Да точно туплю "УПОРЯДОЧИТЬ" ведь...
Вопрос: Странное поведение регистра сведений при записи документа

Добрый день!

Имеем РС подчиненный регистратору, периодичность в пределах секунды. Измерения ФИО, ресурсы примечание строка и отказываю булево.

Добавляется из документа запись:
Код:
Если ДобавитьПримечание<>"" Тогда
        Набор = РегистрыСведений.ИсторияИзмененияПримечаний.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(Объект.Ссылка);
        Набор.Прочитать();
        Запись = Набор.Добавить();
        Запись.Примечание = ДобавитьПримечание;
        Запись.Отказываю = Отказываю;
        Запись.ФизическоеЛицо = ПараметрыСеанса.ТекущийПользователь;
        Запись.Период = ТекущаяДата();
        Набор.Записать(Истина);
КонецЕсли;
Смотрю РС, запись присутствует. Записываю документ. Никакой код не исполняется.
Смотрю РС, запись отсутствует.
Ответ:
Не... объект уже имел свою ссылку в базе если ты об этом.